Android 进阶问答:如何实现屏幕常亮,锁屏可见等骚操作?

近期,深海将推出全新的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);
    }


}
其他的功能,参考属性各位自行扩展吧
发布了55 篇原创文章 · 获赞 213 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_39731011/article/details/103976678