Android仿网易云音乐中锁屏后在开锁界面插屏功能
这个功能实现起来应该有多种方式,可以使用WindowManager创建window的方法。
在本文中我们使用开启一个Activity来充当锁屏界面。
实现步骤有以下两步:
一、后台开启一个Service,监听屏幕锁屏广播。
二、当屏幕熄灭,收到广播后,开启充当锁屏界面的Activity。
实现思路就是这么简单,但具体细节需要说说。
首先开启Service。
Intent service = new Intent(this, LockService.class);startService(service);
在Service监听屏幕锁屏广播。
public void onCreate() {receiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {if (intent.getAction() == Intent.ACTION_SCREEN_OFF) {System.out.println("收到锁屏广播");Intent lockscreen = new Intent(LockService.this, LockScreenActivity.class);lockscreen.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(lockscreen);}}};IntentFilter filter = new IntentFilter();filter.addAction(Intent.ACTION_SCREEN_OFF);registerReceiver(receiver, filter);}
Intent.ACTION_SCREEN_OFF表示屏幕熄灭。
在广播onReceive()方法中,收到屏幕熄灭的广播后,开启充当锁屏界面的Activity,我们知道在Service中启动Activity需要添加一个标志位。
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
这样我们便实现了锁屏功能。
问题还没有结束。
首先开启的Activity我们最好把它设置在单独的一个任务栈中,它与当前APP的任务栈没有关系,相互独立,这样才是一个好的锁屏功能。既然是锁屏,那么这个任务栈有且只有这一个Activity。
我们很容易想到singleInstance属性了。
android:launchMode="singleInstance"android:taskAffinity="com.example.suoping.lockscreen"
其次,这个Activity在最近打开的Activity中不能出现,也就是按住home键出现最近打开的Activity界面中不能有它。因为它是锁屏功能嘛,解锁之后肯定就不能再看到它。
android:excludeFromRecents="true"
最后,在Activity设置Window的Flags,一定要在setContentView之前设置。
this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
假如我们的手机有锁屏功能,就是系统的那种锁屏,滑动图案解锁之类的,那么我们无法越过这个界面,只能在这个界面之上加入我们的Activity,加入这两个flag保证了Activity会出现在锁屏界面。
至此我们的锁屏后插屏功能已经实现。
要完全仿的话,它首先需要滑动finish功能,且不响应back键。
不响应back键容易,覆写onBackPressed()方法什么也不做。
@Overridepublic void onBackPressed() {}
滑动finish功能我们这里用到开源项目SwipeBackLayout,将Activity主题设置为透明,继承SwipeBackActivity即可。
<style name="LockScreenBase" parent="android:Theme.Light.NoTitleBar.Fullscreen"><item name="android:windowIsTranslucent">true</item><item name="android:windowBackground">@android:color/transparent</item><item name="android:colorBackgroundCacheHint">@null</item><item name="android:windowNoTitle">true</item><item name="android:backgroundDimEnabled">false</item><item name="android:windowAnimationStyle">@null</item><item name="android:windowContentOverlay">@null</item></style>
android:windowIsTranslucent表示透明。
android:windowAnimationStyle表示动画,如果锁屏Activity关闭掉后,打开的是APP,可能会短暂黑屏,那么就是因为Activity关闭动画导致的,这种需求下,可以不加这个动画。如果打开的是主页面,不会出现这个问题。
转载地址:https://blog.csdn.net/u010696525/article/details/51445515
Android仿网易云音乐中锁屏后在开锁界面插屏功能相关推荐
- android仿网易云音乐、即时通讯、bilibili、沙漏动画等源码
Android精选源码 android仿网易云音乐安卓版源码 android开源即时通讯,实时传讯IM源码 android类似淘宝的商品详情页源码 android面向.艺术家.设计师等创意类作品源码 ...
- Android 仿网易云音乐App
因为工作实在是有点忙,所以还没完成成品,就先挂到GitHub上.日后慢慢更新啦. 项目地址 GitHub地址,希望大佬们点个star GitHub仿网易云音乐App 效果展示 注:因为视频太模糊,每日 ...
- android 网易云音乐上滑动画,Android 仿网易云音乐 音轨跳动效果
网易云音乐的Loading效果,大家应该也比较熟悉了,效果是一个红色音轨不断跳动的效果,一般用于Loading等待时填充使用.本篇来自定义这个效果. Android 仿网易云音乐 音轨跳动View.g ...
- Android仿网易云音乐播放页面 背景虚化碟片效果
1.效果图 仿网易云音乐播放页面,主要有4个关键点: 背景虚化.获取音乐的专辑封面,将此图片作为背景图,并进行模糊虚化处理 碟片合成.获取音乐的专辑封面,和黑色碟片图片进行合成 碟片旋转.音乐播放时, ...
- android仿网易云音乐引导页、仿书旗小说Flutter版、ViewPager切换、风扇叶片效果等源码...
2019独角兽企业重金招聘Python工程师标准>>> Android精选源码 复现网易云音乐引导页效果 高仿书旗小说 Flutter版,支持iOS.Android Android ...
- android仿网易云音乐引导页、仿书旗小说Flutter版、ViewPager切换、爆炸菜单、风扇叶片效果等源码
Android精选源码 复现网易云音乐引导页效果 高仿书旗小说 Flutter版,支持iOS.Android Android Srt和Ass字幕解析器 Material Design ViewPage ...
- android仿网易云音乐引导页、仿书旗小说Flutter版、ViewPager切换、爆炸菜单、风扇叶片效果等源码...
Android精选源码 复现网易云音乐引导页效果 高仿书旗小说 Flutter版,支持iOS.Android Android Srt和Ass字幕解析器 Material Design ViewPage ...
- Android仿网易云音乐播放界面
概述 网易云音乐是一款非常优秀的音乐播放器,尤其是播放界面,使用唱盘机风格,显得格外古典优雅.这里抛砖引玉,原文地址:http://www.jianshu.com/p/cb54990219d9 首先来 ...
- 音乐歌单Android,仿网易云音乐歌单界面 Header滑动效果
这是我的第一篇博客,做Android 开发2年多以来,曾经也有过写一些技术博客的想法,但因为有时候因为懒,有时候工作忙加班多而力不从心,所以迟迟没有开始写自己的博客.最近正好工作不忙,想写一些博客,记 ...
最新文章
- 1199: 房间安排
- 《数学之美》第5章 隐含马尔可夫模型
- 解决 minicom 不能接收键盘输入问题
- Android Bitmap 研究与思考(上篇)
- OpenCASCADE绘制测试线束:简单的向量代数和测量之测量命令
- [[UIScreen mainScreen] bounds]获取尺寸不对
- SAP CRM Fiori搜索没有命中情况下的调试细节
- oracle导出数据dummy,oracle导出表结构1
- 菜鸟成长记(十一)----- 操蛋的2016与未知的2017
- python-演练-通过描述符来控制另一个类的实例化参数
- linux常用命令--实用小技巧
- 探索流程的奥秘之三, 如何梳理业务流程
- maya mentray_mental ray2016中文版下载|
- uipath 验证码_UiPath邮件自动化Save Attachments的介绍和使用
- 微信OpenIdUnionID
- 优雅降级实现IE8的transform平移属性
- (三) SiamRPN从论文角度介绍
- 泰勒公式系列之一多项式逼近
- 垃圾小白羊leetcode刷题记录2
- 多分类问题中sklearn的RFECV指定scoring函数