gongzhiyao0 2011-04-24
我觉得对于普通人来说,最常见的是Android解屏的界面,然后应该是Home界面。今天就来分析一下解屏界面的相关代码(以索爱的解锁界面为例)。
首先看解屏的界面,我把解屏的界面分为两个部分,最上部是status Bar,下面是LockScreenSemc,在LockScreenSemc上有一个可供滑动解锁的界面,每个界面对应的类如图所示。
两个类所在包:
com.android.internal.policy.impl.LockScreenSemc.java
com.android.internal.widget.SlidingTabSemc.java
SlidingTabSemc.java分析:
分析我们的Touch在 SlidingTabSemc 上产生的效果,主要看onTouchEvent ()的处理。
ACTION_DOWN 时会调用disableButtonPress(),产生手指点击时的动画效果。
ACTION_MOVE 时会调用moveControl()产生图片跟随手指移动的效果。
ACTION_UP 时会判断移动的位置是否已经到了,可以触发Trigger的程度,如果到了,则调用 dispatchTriggerEvent,通知在 SlidingTabSemc上的Trigger Listener。由于 SlidingTabSemc上的 Trigger Listener是在 LockScreenSemc里实现的,所以会代用到 LockScreenSemc中。
LockScreenSemc.java分析:
代码中有一行: private SlidingTabSemc mSelector; 将SlidingTabSemc 作为它的一个属性值,