【Android Lock Pattern】图案解锁(一):LockPatternView源代码
2012-12-03 17:27
435 查看
选择Settings -> Security ->Set up screen lock
设置屏幕锁
选择Pattern
设置图案
在我的真机HTC Desire(Android 2.2)上,截图如下:
Android是一个开源的操作系统,所以我们可以通过下载该控件的源代码重用该控件。
1、LockPatterView源代码
图案解锁控件,对应着framework层的LockPatterView类,如下所示:
源代码:https://github.com/android/platform_frameworks_base/blob/master/core/java/com/android/internal/widget/LockPatternView.java
2、修改
下载的LockPatternView.java文件,无法在项目中直接使用,需要进行修改。
1)添加图片文件
添加6张图片文件到res/drawable:
对应LockPatternView.java的代码
btn_code_lock_default_holo.png
btn_code_lock_touched_holo.png
indicator_code_lock_point_area_default_holo.png
indicator_code_lock_point_area_green_holo.png
indicator_code_lock_point_area_red_holo.png
indicator_code_lock_drag_direction_green_up.png
indicator_code_lock_drag_direction_red_up.png
2)添加attrs配置文件
添加attrs.xml文件到res/values
3)更新strings配置文件
在res/strings.xml添加新的<string/>
4)修改代码
修改mPaddingLeft为getPaddingLeft(),mPaddingRight为getPaddingRight(),mPaddingTop为getPaddingTop(),mPaddingBottom为getPaddingBottom()
修改mContext为getContext()
修改方法private void sendAccessEvent(int resId)
5)添加类LockPatternUtils
新建LockPatternUtils.java文件,实现public static String patternToString(List<LockPatternView.Cell> pattern)和public static List<LockPatternView.Cell> stringToPattern(String string)方法
具体可以参考Android的LockPatternUtils类
源代码:https://github.com/android/platform_frameworks_base/blob/master/core/java/com/android/internal/widget/LockPatternUtils.java
3、使用
LockPatternView的使用与其它View相同,并提供了事件的回调处理的方法public void setOnPatternListener(OnPatternListener onPatternListener)和接口LockPatternView.OnPatternListener
参考:http://www.eoeandroid.com/forum.php?mod=viewthread&tid=231102
设置屏幕锁
选择Pattern
设置图案
在我的真机HTC Desire(Android 2.2)上,截图如下:
Android是一个开源的操作系统,所以我们可以通过下载该控件的源代码重用该控件。
1、LockPatterView源代码
图案解锁控件,对应着framework层的LockPatterView类,如下所示:
源代码:https://github.com/android/platform_frameworks_base/blob/master/core/java/com/android/internal/widget/LockPatternView.java
2、修改
下载的LockPatternView.java文件,无法在项目中直接使用,需要进行修改。
1)添加图片文件
添加6张图片文件到res/drawable:
对应LockPatternView.java的代码
mBitmapBtnDefault = getBitmapFor(R.drawable.btn_code_lock_default_holo); mBitmapBtnTouched = getBitmapFor(R.drawable.btn_code_lock_touched_holo); mBitmapCircleDefault = getBitmapFor(R.drawable.indicator_code_lock_point_area_default_holo); mBitmapCircleGreen = getBitmapFor(R.drawable.indicator_code_lock_point_area_green_holo); mBitmapCircleRed = getBitmapFor(R.drawable.indicator_code_lock_point_area_red_holo); mBitmapArrowGreenUp = getBitmapFor(R.drawable.indicator_code_lock_drag_direction_green_up); mBitmapArrowRedUp = getBitmapFor(R.drawable.indicator_code_lock_drag_direction_red_up);
btn_code_lock_default_holo.png
btn_code_lock_touched_holo.png
indicator_code_lock_point_area_default_holo.png
indicator_code_lock_point_area_green_holo.png
indicator_code_lock_point_area_red_holo.png
indicator_code_lock_drag_direction_green_up.png
indicator_code_lock_drag_direction_red_up.png
2)添加attrs配置文件
添加attrs.xml文件到res/values
<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="LockPatternView"> <attr name="aspect" format="string" /> </declare-styleable> </resources>
3)更新strings配置文件
在res/strings.xml添加新的<string/>
<!-- Accessibility description sent when user starts drawing a lock pattern. --> <string name="lockscreen_access_pattern_start">Pattern started</string> <!-- Accessibility description sent when the pattern times out and is cleared. --> <string name="lockscreen_access_pattern_cleared">Pattern cleared</string> <!-- Accessibility description sent when user adds a cell to the pattern. --> <string name="lockscreen_access_pattern_cell_added">Cell added</string> <!-- Accessibility description sent when user completes drawing a pattern. --> <string name="lockscreen_access_pattern_detected">Pattern completed</string>
4)修改代码
修改mPaddingLeft为getPaddingLeft(),mPaddingRight为getPaddingRight(),mPaddingTop为getPaddingTop(),mPaddingBottom为getPaddingBottom()
修改mContext为getContext()
修改方法private void sendAccessEvent(int resId)
private void sendAccessEvent(int resId) { setContentDescription(getContext().getString(resId)); sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_SELECTED); setContentDescription(null); }
5)添加类LockPatternUtils
新建LockPatternUtils.java文件,实现public static String patternToString(List<LockPatternView.Cell> pattern)和public static List<LockPatternView.Cell> stringToPattern(String string)方法
具体可以参考Android的LockPatternUtils类
源代码:https://github.com/android/platform_frameworks_base/blob/master/core/java/com/android/internal/widget/LockPatternUtils.java
3、使用
LockPatternView的使用与其它View相同,并提供了事件的回调处理的方法public void setOnPatternListener(OnPatternListener onPatternListener)和接口LockPatternView.OnPatternListener
参考:http://www.eoeandroid.com/forum.php?mod=viewthread&tid=231102
相关文章推荐
- [Android UI]android-lockpattern图案解锁的实现分享
- Android Lock Pattern 图案解锁
- 【Android Lock Pattern】图案解锁(一):LockPatternView源代码
- android LockPattern手势解锁
- android解决图形解锁图案忘记的方法
- android图案解锁功能的实现
- Android手势密码LockPatternView、LockPasswordUtils、LockPatternUtils等分析
- Android Pattern Lock on iPhone
- Android 图案解锁 9宫格密码解锁
- Android屏幕解锁图案破解
- Android 实例:九宫格图案解锁,"程序锁"模拟场景使用
- Android中图案解锁的设计原理和实现过程
- Android实现九宫格图案解锁
- android 手机在忘记解锁密码/图案情况下,且未开通usb调试模式下如何解锁
- Android屏幕解锁图案破解
- PatternLockView滑动解锁
- Android Lock Pattern 源码解析
- (4.2.42)手势解锁之九宫格控件PatternLockView
- Android解锁图案共有多少种?
- Android仿手机QQ图案解锁功能