【Android Lock Pattern】图案解锁(一):LockPatternView源代码
選擇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
<?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
?
?
轉載于:https://www.cnblogs.com/dyingbleed/archive/2012/12/03/2800007.html
總結
以上是生活随笔為你收集整理的【Android Lock Pattern】图案解锁(一):LockPatternView源代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu 取消 Apache及MyS
- 下一篇: 参考数据库