1.手动设置横竖屏

1
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);

2.暂时性设置隐藏 StatusBar,点击屏幕后会再次出现,可用于全屏播放视频的时候.

1
View.setSystemUiVisibility(int visibility)
  1. View.SYSTEM_UI_FLAG_VISIBLE:显示状态栏,Activity 不全屏显示(恢复到有状态的正常情况)。
  2. View.INVISIBLE:隐藏状态栏,同时 Activity 会伸展全屏显示。
  3. View.SYSTEM_UI_FLAG_FULLSCREEN:Activity 全屏显示,且状态栏被隐藏覆盖掉。
  4. View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity 全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,Activity 顶端布局部分会被状态遮住。
  5. View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION:效果同 View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
  6. View.SYSTEM_UI_LAYOUT_FLAGS:效果同 View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
  7. View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:隐藏虚拟按键(导航栏)。有些手机会用虚拟按键来代替物理按键。
  8. View.SYSTEM_UI_FLAG_LOW_PROFILE:状态栏显示处于低能显示状态(low profile 模式),状态栏上一些图标显示会被隐藏。 3.线程安全的一种写法
1
2
3
4
5
6
7
8
9
10
private static final Object sDecodeLock = new Object();

synchronized (sDecodeLock) {
try {
return doParse(response);
} catch (OutOfMemoryError e) {
VolleyLog.e("Caught OOM for %d byte image, url=%s", response.data.length, getUrl());
return Response.error(new ParseError(e));
}
}

4.去掉 Actionbar 下的阴影

1
2
3
<style name="MyAppTheme" parent="android:Theme.Holo.Light">
<item name="android:windowContentOverlay">@null</item>
</style>

5.子控件接收父控件的状态:无需 Java 代码即可实现点击父控件,变化子 TextView 的颜色.

1
android:duplicateParentState="true"

6.获取 ListView 滑动高度,这里是默认每个 itemView 的高度相等.

1
2
3
4
5
6
7
8
9
public int getScrollY() {
View c = mListView.getChildAt(0);
if (c == null) {
return 0;
}
int firstVisiblePosition = mListView.getFirstVisiblePosition();
int top = c.getTop();
return -top + firstVisiblePosition * c.getHeight() + mListView.getPaddingTop();
}

7.限制 value 的范围大小,value 最大为 max,最小为 min

1
2
3
public float clamp(float value, float min, float max) {
return Math.max(min, Math.min(value, max));
}