热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【AndroidLockPattern】图案解锁(一):LockPatternView源代码

选择Settings-Security-Setupscreenlock设置屏幕锁选择Pattern设置图案在我的真机HTCDesire(Android2.2)上,截图如下:An

选择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的代码

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






 

3)更新strings配置文件

在res/strings.xml添加新的


Pattern started
Pattern cleared
Cell added
Pattern completed

 

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 pattern)和public static List 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

 

 

转载于:https://www.cnblogs.com/dyingbleed/archive/2012/12/03/2800007.html



推荐阅读
author-avatar
魔者
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有