Android手势密码LockPatternView、LockPasswordUtils、LockPatternUtils等分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pcaxb/article/details/47375323

Android手势密码LockPatternView、LockPasswordUtils、LockPatternUtils

在使用别人写的这个手势密码的时候,我们通常是有自己的需求,可能这里的代码很多也很复杂,有没有什么很多注释,要把整个代码弄明白是要花很多时间而且基础要非常好的,可能在赶项目的时候没有时间去研究,下面我列出一些关键的地方,方便修改代码。

1.在创建手势密码的时候CreateGesturePasswordActivity中

下面是手势密码设置的时候界面的一些变化,和要处理的一些事情

switch (mUiStage) {
case Introduction:
	//刚进去的时候  // 重试的时候
	mLockPatternView.clearPattern();
	break;
case HelpScreen:
	//刚进去的时候
	mLockPatternView.setPattern(DisplayMode.Animate, mAnimatePattern);
	break;
case ChoiceTooShort:
	//设置短了松开
	mLockPatternView.setDisplayMode(DisplayMode.Wrong);
	postClearPatternRunnable();
	break;
case FirstChoiceValid:
	//设置对了松开	
	break;
case NeedToConfirm:
	//点击继续
	mLockPatternView.clearPattern();
	updatePreviewViews();
	break;
case ConfirmWrong:
	//第二次和第一次的不一样
	mLockPatternView.setDisplayMode(DisplayMode.Wrong);
	postClearPatternRunnable();
	break;
case ChoiceConfirmed:
	//第二次和第一次的一样
	break;
}

2.在LockPatternView中设置手势密码默认、正确和错误的显示图片,其实那个 圈圈的大小是根据你的图片的大小变化的

注意: 这里的三个图片的大小是一样的

画手势的默认图片
mBitmapCircleDefault = getBitmapFor(R.drawable.gesture_pattern_item_bg);
画手势正确的图片
mBitmapCircleGreen = getBitmapFor(R.drawable.gesture_pattern_selected);
画手势错误的图片
mBitmapCircleRed = getBitmapFor(R.drawable.gesture_pattern_selected_wrong);

3.在LockPatternView中设置手势密码连接线的颜色红色和黄色

这里的颜色你可能要改变多个地方的颜色

设置黄色
mPathPaint.setColor(Color.RED);
设置红色
mPathPaint.setColor(Color.YELLOW);

4.判断有没有手势密码

if (App.getInstance().getLockPatternUtils().savedPatternExists()) {
	//如果这里是true就是有手势密码,false就是没有手势密码
}

5.清除手势密码重新创建

String LOCK_PATTERN_FILE = "gesture.key";
String dataSystemDirectory = context.getFilesDir() .getAbsolutePath(); 
File file = new File(dataSystemDirectory , LOCK_PATTERN_FILE);
if (file.isFile()) { file.delete(); } 
然后跳转到UnlockGesturePasswordActivity.class不到CreateGesturePasswordActivity.java的哪里就可以了 

6.手势密码顶部记录区,这里的小圆圈是可以在这里设置大小和间距的,这里是比较麻烦的区域,需要你非常的细心设置。

注意: 这里的背景切图一定要做好,要美工给你标出大小和间距,

<LinearLayout
android:id="@+id/gesturepwd_setting_preview"
android:layout_width="40.0dip"
android:layout_height="40.0dip"
android:layout_gravity="center_horizontal"
android:background="@drawable/gesture_create_grid_bg"
android:orientation="vertical"
android:padding="5.0dip" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="6.0dip" >

        <View
            android:id="@+id/gesturepwd_setting_preview_0"
            android:layout_width="6.0dip"
            android:layout_height="6.0dip"
            android:background="@drawable/trans" />

        <View
            android:id="@+id/gesturepwd_setting_preview_1"
            android:layout_width="6.0dip"
            android:layout_height="6.0dip"
            android:layout_marginLeft="6.0dip"
            android:background="@drawable/trans" />

        <View
            android:id="@+id/gesturepwd_setting_preview_2"
            android:layout_width="6.0dip"
            android:layout_height="6.0dip"
            android:layout_marginLeft="6.0dip"
            android:background="@drawable/trans" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="6.0dip"
        android:layout_marginTop="6.0dip" >

        <View
            android:id="@+id/gesturepwd_setting_preview_3"
            android:layout_width="6.0dip"
            android:layout_height="6.0dip"
            android:background="@drawable/trans" />

        <View
            android:id="@+id/gesturepwd_setting_preview_4"
            android:layout_width="6.0dip"
            android:layout_height="6.0dip"
            android:layout_marginLeft="6.0dip"
            android:background="@drawable/trans" />

        <View
            android:id="@+id/gesturepwd_setting_preview_5"
            android:layout_width="6.0dip"
            android:layout_height="6.0dip"
            android:layout_marginLeft="6.0dip"
            android:background="@drawable/trans" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="6.0dip"
        android:layout_marginTop="6.0dip" >

        <View
            android:id="@+id/gesturepwd_setting_preview_6"
            android:layout_width="6.0dip"
            android:layout_height="6.0dip"
            android:background="@drawable/trans" />

        <View
            android:id="@+id/gesturepwd_setting_preview_7"
            android:layout_width="6.0dip"
            android:layout_height="6.0dip"
            android:layout_marginLeft="6.0dip"
            android:background="@drawable/trans" />

        <View
            android:id="@+id/gesturepwd_setting_preview_8"
            android:layout_width="6.0dip"
            android:layout_height="6.0dip"
            android:layout_marginLeft="6.0dip"
            android:background="@drawable/trans" />
    </LinearLayout>
</LinearLayout>

7.效果图


至于底部按钮、提示文字、背景颜色等都是很容易解决的

积累一些吧,就算你不是很懂这里的代码,你也可以做你的手势密码。

源码下载: http://download.csdn.net/detail/pcaxb/8747015

猜你喜欢

转载自blog.csdn.net/pcaxb/article/details/47375323