转自:http://blog.csdn.net/kay_wyong/article/details/6607729

两个类所在包:

com.Android.internal.policy.impl.LockScreen.java

com.Android.internal.widget.SlidingTab.java

SlidingTab.java分析:

分析我们的Touch在 SlidingTab 上产生的效果,主要看onTouchEvent ()的处理。

ACTION_DOWN 时会调用disableButtonPress(),产生手指点击时的动画效果。

ACTION_MOVE 时会调用moveControl()产生图片跟随手指移动的效果。

ACTION_UP 时会判断移动的位置是否已经到了,可以触发Trigger的程度,如果到了,则调用 dispatchTriggerEvent,通知在 SlidingTab上的Trigger Listener。由于 SlidingTab上的 Trigger Listener是在 LockScreen里实现的,所以会代用到 LockScreen中。

LockScreen.java分析:

代码中有一行: private SlidingTab mSelector; 将SlidingTab 作为它的一个属性值.

另外此类实现了SlidingTab.OnTriggerListener。这个listener用来执行我们从左到右或者从右到左的滑动,在构造函数中有mSelector.setOnTriggerListener(this);这样我们在 SlidingTab上的滑动会调用到 public void onTrigger(View v, int whichHandle)方法中。

onTrigger的执行为两个分支,一个为从右滑向左,执行了mAudioManager.setRingerMode(),设置了声音的模式,并更新右边声音的图片。另一个为从左滑向右,执行的是mCallback.goToUnlockScreen();这个mCallback是何方神圣呢?它是 KeyguardScreenCallback类型,并且在LockScreen初始化的时候传进来的,跟踪后我们发现,LockScreen是类LockPatternKeyguardView的一个属性值(private View mLockScreen);KeyguardScreenCallback的实现在LockPatternKeyguardView中。

LockPatternKeyguardView中LockPatternKeyguardView的逻辑是,如果用户在设置->位置和安全 ->设置屏幕锁定中设置了解锁画面,则调用了updateScreen(Mode.UnlockScreen)进入相应的解锁画面,否则调用:getCallback().keyguardDone(true); 这个getCallback() 返回的是KeyguardViewMediator。

KeyguardViewMediator 中 keyguardDone()方法,最终会给Handler发送KEYGUARD_DONE 的消息,Handler会执行handleKeyguardDone()方法,在方法中会调用handleHide(),这个函数会将我们的LockScreen给隐藏。

总结:总体来说,上面提到的类基本上可以这么认为,SlidingTab属于LockScreen,LockScreen属于 LockPatternKeyguardView, LockPatternKeyguardView 属于KeyguardViewManager,KeyguardViewManager来统管所有与锁解屏相关的操作,另外通过 KeyguardViewMediator,来实现KeyguardViewManager和PhoneWindowManager之间的交互与通信.

画面的更新实现

画面更新是由com.Android.internal.policy.impl.KeyguardUpdateMonitor 来实现的。它注册锁屏Receive 用于接受各种Intent(例如:时间,电池,Sim状态,电话状态),来处理Lock界面上的信息的更新。

更多相关文章

  1. Android中两种实现倒计时的方法
  2. Android获取系统内核版本的方法
  3. Android Studio执行Java类的main方法及解决方法
  4. Android 延迟执行方法
  5. android帮助文档打开慢的解决方法
  6. android 五种Toast显示方法
  7. 关于AlertDialog中EditText不能弹出输入法解决方法
  8. android实现圆角矩形背景的方法
  9. Android RadioButton【单选按钮】的点击事件的两种方法

随机推荐

  1. android按键模拟测试
  2. android 里面的测量单位
  3. android四种不同的事件实现
  4. 如何隐藏Activity的界面,让其在后台运行
  5. Activity finish后出现闪烁的解决办法
  6. Android Wifi Hotspot Manager Class
  7. android res目录资源文件适配
  8. Android录制视频,可限制时长,限大小
  9. Android HOME键屏蔽
  10. android opengl开发示例代码