2 steps, firstly, set scroll bar rotation in AndroidManifest.xml:
android:scrollbars="vertical"
Then, set the scrolling method for the TextView, mostly in onCreate() function:
((TextView)findViewById(R.id.textview)).setMovementMethod(ScrollingMovementMethod.getInstance());
Thursday, January 29, 2015
Parent Activity is destroyed when providing Up navigation
If providing Up navigation behavior as Android doc: http://developer.android.com/training/implementing-navigation/ancestral.html, when click the Up button on the navigation bar, the parent activity is destroyed then re-created. It is different behavior as pressing back key.
To avoid destroy parent activity, one solution is setting launch mode <singleTop> for the activity in AndroidManifest.xml:
The different between Up key and Back key is, when pressing Back key, by default, the currently activity is popup from activity stack and finished, so the previously activity shows up. When pressing Up key, the currently activity is popup from stack too, but the parent activity, which is defined in AndroidManifest.xml and maybe not the previously activity, is created to show. By default the launch mode is <standard> so the existed activity task is destroyed then re-create. To set the launch mode to <singleTop>, Android will launch the existed one instead of create a new task.
To avoid destroy parent activity, one solution is setting launch mode <singleTop> for the activity in AndroidManifest.xml:
android:launchMode="singleTop"
The different between Up key and Back key is, when pressing Back key, by default, the currently activity is popup from activity stack and finished, so the previously activity shows up. When pressing Up key, the currently activity is popup from stack too, but the parent activity, which is defined in AndroidManifest.xml and maybe not the previously activity, is created to show. By default the launch mode is <standard> so the existed activity task is destroyed then re-create. To set the launch mode to <singleTop>, Android will launch the existed one instead of create a new task.
Tuesday, October 28, 2014
Get Android Kernel log
To catch Kernel log, need a rooted Android device and adb shell worable, then use the adb logcat command:
$adb shell logcat -v time -f /dev/kmsg | cat /proc/kmsg
To write the output to a file:
$adb shell logcat -v time -f /dev/kmsg | cat /proc/kmsg > /sdcard/log.txt
Thursday, April 24, 2014
Get navigation bar (TSB bar) height
The dim value is defined as com.android.internal.R.dimen.navigation_bar_height.
final int naviHeight = mContext.getResources().getDimensionPixelSize(
com.android.internal.R.dimen.navigation_bar_height);
final int naviHeight = mContext.getResources().getDimensionPixelSize(
com.android.internal.R.dimen.navigation_bar_height);
Monday, April 14, 2014
How to exclude activity from recent application list on Android
To forbidden your activity in the recent application list, just define this parameter in AndroidManifest.xml for the activity:
for example:
<activity
android:name="com.test.MainActivity"
android:noHistory="true"
android:screenOrientation="portrait"
android:excludeFromRecents="true"
android:label="@string/app_name">
......
</activity>
android:excludeFromRecents="true"
for example:
<activity
android:name="com.test.MainActivity"
android:noHistory="true"
android:screenOrientation="portrait"
android:excludeFromRecents="true"
android:label="@string/app_name">
......
</activity>
Wednesday, February 26, 2014
Monitor screen ON and OFF
Has to register receiver via function registerReceiver(), so usually have to create a service for it.
public class UpdateService extends Service {
BroadcastReceiver mReceiver = new BroadcastReceiver {
private boolean screenOff;
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
screenOff = true;
} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
screenOff = false;
}
handleScreenAction(screenOff);
}
}
private void handleScreenAction(boolean screenOff) {
if (screenOff) {
// your code
} else {
// your code
}
}
@Override
public void onCreate() {
super.onCreate();
// register receiver that handles screen on and screen off logic
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
registerReceiver(mReceiver, filter);
}
@Override
public void onDestory() {
super.onDestory();
unRegisterReceiver(mReceiver);
}
public void onStart(Context context, Intent intent, int startId) {
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}
public class UpdateService extends Service {
BroadcastReceiver mReceiver = new BroadcastReceiver {
private boolean screenOff;
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
screenOff = true;
} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
screenOff = false;
}
handleScreenAction(screenOff);
}
}
private void handleScreenAction(boolean screenOff) {
if (screenOff) {
// your code
} else {
// your code
}
}
@Override
public void onCreate() {
super.onCreate();
// register receiver that handles screen on and screen off logic
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
registerReceiver(mReceiver, filter);
}
@Override
public void onDestory() {
super.onDestory();
unRegisterReceiver(mReceiver);
}
public void onStart(Context context, Intent intent, int startId) {
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}
Tuesday, February 25, 2014
Detect headset / Bluetooth status
need this permission:
<uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>
and code snap:
AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
if (audioManager.isWiredHeadsetOn()
|| audioManager.isBluetoothA2dpOn()
|| audioManager.isBluetoothScoOn() ) {
// headset connected
}
<uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>
and code snap:
AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
if (audioManager.isWiredHeadsetOn()
|| audioManager.isBluetoothA2dpOn()
|| audioManager.isBluetoothScoOn() ) {
// headset connected
}
Subscribe to:
Posts (Atom)
Enable HP Zbook Thunderbolt 3 Dock on Ubuntu
As mention in previously post, I installed Ubuntu on my HP ZBook. After two days used all things work just fine, but the Thunderbolt 3 Dock ...
-
As mention in previously post, I installed Ubuntu on my HP ZBook. After two days used all things work just fine, but the Thunderbolt 3 Dock ...
-
I tried to add a VideoView to a layout dynamic via code in my Android app, but the whole screen flashes when the VideoView was added first ...
-
To create a button in Android app like this: The layout XML: <Button android:layout_width="match_parent" andro...