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);

   

    此外,就靠详细的逻辑设计了,将程序日臻完美。

 

这一折腾下来,遇到不少问题,着实有点气馁。现在还在设计过程中..

“我!是要当海贼王的男人!奋斗”---共勉。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值