Android屏幕锁设计
Android屏幕锁设计
对于android屏幕锁的设计,最忌照搬Iphone的滑动滑块解锁,否则公司难免卷入专利纠纷之中,黄河水也洗不清。
有一个想法:将锁屏设计成3D的球体,当然得用到OpenGL方面,然后拨动球体旋转,当达到所规定的圈数(e.g.3圈)之后便可以开锁。
单就以上所述,屏幕锁可以做得更绚丽,但同时,挑战性也可想而知。
能力尚浅,现单说说常见的锁屏的设计原理:
对于锁屏,android系统都有自带,这样首当其冲的就是如何取而代之:
((KeyguardManager) context
.getSystemService(Context.KEYGUARD_SERVICE))
.newKeyguardLock("").disableKeyguard();// 取消系统自带的屏幕锁。
其实,屏幕锁的锁屏就是一个Activity,只不过在这个Activity下屏蔽了HOME键、返回键,并去掉了标题栏。这儿说说屏蔽的方法。
@Override
// 屏蔽home键
public void onAttachedToWindow() {
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
@Override
// 屏蔽其他键
public boolean onKeyDown(int keyCode, KeyEventevent) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
return true;
}
return super.onKeyDown(keyCode,event);
}
以上两步就可以成功屏蔽一些按键了。对于如何去掉标题栏,只需要在onCreate()方法的开头加上:
requestWindowFeature(Window.FEATURE_NO_TITLE);// 无标题
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);// 无状态栏
这样一来就可以setContentView()了,出于创意的角度,可以自定义View、ViewGroup,也可以简单滴用一个带背景图片的View,然后就可以开始复写onTouchEvent()事件了。
在OnTouchEvent()事件当中,分onDown、onMove和onUp,其中得注意返回值true。在规划你的解锁蓝图时一些数学函数是少不了的,像Math.hypot、Math.sqrot、Math.ceil、Math.floor等等。
设计好锁屏的这个Activity之后,接下来面临的就是如何在恰当的时候调用这个Activity。
先说开机启动的时候。有一个BOOT_COMPLETED的intent,在开机启动的时候会Broadcast出来,所以,只需在静态注册一个reveiver来接收这样的一个intent。其间得注意一个权限的:
<uses-permissionandroid:name="android.permission.RECEIVE_BOOT_COMPLETED" />
然后就可以设计这样一个receiver并重写onReceive(),通过这个事件来启动锁屏的Activity。
接下来的就是ScreenON和ScreenOFF的时候了。同样,系统会Broadcast这样的事件,所以用receiver来接收,但是注意此时不能用静态注册的方法了,改用动态注册,可以灵活管理。那么在哪里注册呢?Activity?Service!
因为,对于ScreenON与ScreenOFF事件需要实时监听,所以选择一个Service是必须的。
值得注意的是,在Activity之外启动一个Activity,得注意加上setFlags():
intent.setClass(context, LockScreen.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
此外,就靠详细的逻辑设计了,将程序日臻完美。
这一折腾下来,遇到不少问题,着实有点气馁。现在还在设计过程中..
“我!是要当海贼王的男人!”---共勉。
Android屏幕锁设计相关推荐
- android系统锁屏锁怎么解决方法,Android 屏幕锁 - WakeLock
Android 屏幕锁 - WakeLock Android,powermanager,wakelock,屏幕, PowerManager android.os.PowerManager PowerM ...
- android屏幕锁界面,安卓手机屏幕锁设置方法(九个点图案)
这里以三星S5368手机屏幕锁为例 随着三星S5368手机系统功能愈来愈完善,性能愈来愈强劲,越来越多的三星S5368用户们都喜欢把一些重要的信息甚至隐私放在三星S5368手机里面,但是这就有可能会让 ...
- qt android屏幕锁屏,Qt 实现超时锁屏
最近使用Qt实现超时锁屏的功能(工控机触摸屏),当手长时间不触摸屏幕的时候,程序超时会显示锁屏窗口. 一.效果 主窗口超时显示锁屏窗口: 系统窗口超时显示锁屏窗口: 二.实现思路 首先开启一个线程用于 ...
- Android 唤醒屏幕的方式:屏幕锁 - WakeLock / FLAG_KEEP_SCREEN_ON
Android 屏幕锁 - WakeLock PowerManager android.os.PowerManager PowerManager 是用来管理设备的电源状态的类.下面是官方文档 This ...
- android手机可以设置屏幕锁定,安卓手机屏幕锁设置方法(九个点图案)
这里以三星S5368手机屏幕锁为例 随着三星S5368手机系统功能愈来愈完善,性能愈来愈强劲,越来越多的三星S5368用户们都喜欢把一些重要的信息甚至隐私放在三星S5368手机里面,但是这就有可能会让 ...
- android设置不锁屏adb,如何通过ADB锁定Android屏幕?
如何通过ADB锁定Android屏幕? 有没有办法通过ADB锁定Android屏幕? 我找到了将显示锁定在apk中的方法,但是我想通过ADB从PC锁定屏幕,以模拟显示超时,而不必等待超时. 是否有可能 ...
- android屏幕解锁图案,安卓手机图案屏幕锁解锁方法!!
当你的安卓手机密码锁忘记了怎么办?今天一不小心把手机改了图案锁结果由于改的时候匆忙结果忘记了,在网上找了好多方法都无果,也有人说重新刷机就会好!!这个简直就是废话,刷机当然能好了!! 关键是解锁要解决 ...
- Android 解屏幕锁与点亮屏幕(来电时效果)
当Android手机(应该是所有的手机都这样)收到短信或者电话时,会自动点亮屏幕,解开屏幕锁,以方便用户即时操作,下面用代码来实现这一功能: PowerManager pm=(PowerManager ...
- android基础--屏幕锁
九宫格 PIN密码 密码锁屏 自从:API Level 8 (Android 2.2) 开始, Android提供了DevicePolicyManager类, 可以让你的应用程序也能执行屏幕 ...
最新文章
- 一文了解可视化的主成分分析(附教程)
- 长文综述:从大数据中寻找复杂系统的核心变量
- 将带空格的字符串去掉空格.join()函数
- time,atoi,strstr
- 查看MySQL句柄_mysql查询语句-handler
- python画图比赛_Python选修课第二届Turtle绘图大赛
- Struts2面试问答
- HDU2138 随机素数测试 Miller-Rabin算法
- 【eoe特刊】第二十七期 OpenGL ES学习及项目解析
- SpringBoot使用Easypoi导出excel示例
- DM8168的SPI接口
- 学习GNU Make (2): 规则
- 如何将 hadoop1.1.2/1.2.1 源码关联到 Eclipse
- hex2bin 64bit
- 导出(合并)手机QQ浏览器下载的视频
- 微信小程序编译的时候模拟器空白显示
- ~是什么意思 在C语言中,~0代表什么
- 织梦dedecms TAG标签调用汇总(史上最全)
- bcoma 应用程序发生错误_打开网页老是出现《应用程序错误》是怎么回事?
- smpl-x论文学习-部分翻译