近期,深海将推出全新的Android博客个人分类:<Android 进阶问答>.在这里,深海将与大家分享一些Android冷门的知识.
1.如何实现屏幕常亮,锁屏可见,屏幕高亮等操作?
重点涉及知识点: WindowManager
涉及方法:Activity类的getWindow(),Window类的addFlags()
涉及属性:WindowManager.LayoutParams.XXX
常用属性详解:
FLAG_ALLOW_LOCK_WHILE_SCREEN_ON
只要窗口是可见的,就允许在屏幕开启的状态锁定屏幕
FLAG_NOT_FOCUSABLE
设置后,窗口永远不会获取焦点,
焦点会传递给在其下面的可获取焦点的窗口
设置该标签后 会同时自动启用 FLAG_NOT_TOUCH_MODAL (同级标签)
FLAG_NOT_TOUCHABLE
这个窗口永远无法接收触摸事件
FLAG_KEEP_SCREEN_ON
当这个窗口是可见状态,则保持设备屏幕常亮不锁屏
FLAG_LAYOUT_NO_LIMITS
允许窗口超过屏幕之外
FLAG_SHOW_WHEN_LOCKED
使得窗口可以在锁屏状态下显示
FLAG_TURN_SCREEN_ON
当窗口被添加或者显示,系统会点亮屏幕
这只是深海认为比较实用的部分属性,更多属性与解释请参考源码.
使用举例: 屏幕常亮
public abstract class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 屏幕常亮设置:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
}
其他的功能,参考属性各位自行扩展吧