锁屏界面上显示Activity
来源:互联网 发布:怪物猎人p3雷狼数据 编辑:程序博客网 时间:2024/05/19 23:15
在Android中,有些比较强的提醒,需要用户紧急处理的内容。需要唤醒屏幕,甚至在锁定屏幕的情况下,也要显示出来。例如,来电界面和闹钟提醒界面。这是怎样实现的呢?
其实,实现起来非常简单。只要给Activity的Window添加如下属性即可:
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); ...}
注意这里的FLAG_SHOW_WHEN_LOCKED
和FLAG_TURN_SCREEN_ON
,从名字上就能看出其作用。FLAG_TURN_SCREEN_ON
使Activity启动的时候能够点亮屏幕。FLAG_SHOW_WHEN_LOCKED
能够在屏幕锁定的时候,也能显示。
关于FLAG_SHOW_WHEN_LOCKED
这个flag,官方文档说明如下:
Window flag: special flag to let windows be shown when the screen is locked. This will let application windows take precedence over key guard or any other lock screens. Can be used with
FLAG_KEEP_SCREEN_ON
to turn screen on and display windows directly before showing the key guard window. Can be used withFLAG_DISMISS_KEYGUARD
to automatically fully dismisss non-secure keyguards.This flag only applies to the top-most full-screen window.
这段话的大概意思是,这个Flag能够让windown在锁屏的时候,在锁屏之上显示。可以配合FLAG_KEEP_SCREEN_ON
(保持屏幕常亮)和FLAG_DISMISS_KEYGUARD
(解锁屏幕)等Flag使用。需要特别注意的是最后一句话,意思就是这个flag只有是全屏幕的window
才起作用。例如,对你的Activity使用了Dialog的Theme,如下:
<activity android:theme="@android:style/Theme.Dialog" />
这时,你的Activity将不能显示在锁屏之上。
另外,在锁屏上显示Activity,为了不让界面显得太突兀,你可能还想能够使用系统的屏保作为你的Activity背景,系统闹钟就是这么做的。要实现这样的功能也特别容易,只要把Activity的背景设为透明即可,例如你可以为你的Activity定义如下Theme:
<style name="FullScreenTheme" parent="@android:style/Theme.Light.NoTitle"> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:colorBackgroundCacheHint">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsTranslucent">true</item> <item name="miui:windowTranslucentStatus">transparentDark</item></style><activity android:theme="@style/FullScreenTheme" />
题外话,我们可以通过如下方法判断,系统是否处在锁屏状态:
KeyguardManager km = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);boolean showingLocked = km.inKeyguardRestrictedInputMode();
- 锁屏界面上显示Activity
- Activity界面显示全解析
- Activity显示空白界面解决方法
- Activity界面显示全解析
- 启动Activity不显示界面
- 锁屏显示Activity
- popupwindow在activity上显示
- 在非Activity类中显示界面
- 启动Activity但是不显示界面
- 启动Activity但不显示其界面
- android_不显示界面的activity调用
- Activity跳转后显示空白界面
- VC 界面上如何显示中文
- Android 在程序界面上显示图片
- Direct3DTexture9显示到MFC界面上
- Android 在程序界面上显示图片
- 2 在界面上显示战机
- 如何在界面上显示本地图片
- 浅谈分布式系统的基本问题:可用性与一致性
- LeetCode53. Maximum Subarray
- 关于在手机浏览器中a标签点击出现淡蓝色背景的解决方法
- 谷歌GDELT数据下载代码
- There is no Action mapped for namespace [/] and action name [struts2Test!test] associated with conte
- 锁屏界面上显示Activity
- 西南交通大学第十三届ACM决赛 D.Music Problem【Bitset+背包/思维+背包】
- mysql数据库读写分离的好处
- gets输入指针
- Mac下一键安装Apache/Nginx+MySQL+PHP开发环境 及各版本测试PHP探针
- 端口相关
- async/await 异步函数
- hive 修改表/分区语句
- Java类的继承_动力节点Java学院整理