美文网首页AndroidZK安卓开发工具箱Android知识
android开发图案解锁学习记录三(设置图案监听)

android开发图案解锁学习记录三(设置图案监听)

作者: zzj丶 | 来源:发表于2016-11-18 16:24 被阅读314次

    设置密码:
    要设置密码 就要在初始化点的时候进行设置,我们通过自然数的方式进行设置

    当点初始化完成 ,我们遍历点的二维数组,进行设置

    //设置密码

    int index = 1;
    for(Point[] points : this.points){
        for(Point point : points){
            point.index = index;
            index++;
        }
    }
    
    

    设置图案监听器

    /**
     * 图案监听器
     */
    public static interface onPatternChangeListener{
        /**
         * 绘制图案的密码
         * @param passwordstr 密码
         */
        void onPatternChange(String passwordstr);
    
        /**
         * 监听是否重新绘制
         * @param isClick
         */
        void onPatternStart(boolean isClick);
    }
    
    /**
     * 设置监听
     * @param onPatternChangeListener
     */
    public void setPatternChangeListener(onPatternChangeListener onPatternChangeListener){
        if(onPatternChangeListener!=null){
            this.onPatternChangeListener = onPatternChangeListener;
        }
    }
    

    在绘制完成后,通过监听器获取密码,并且返回出去,绘制错误也要做出相应的提示

    //如果绘制完成,判断绘制选中点的结果

    if (isFinsh) {
        if (pointList.size() == 1) {
            //如果只选中一个点,条件不成立,将集合清空
            resetPoint();
        } else if (pointList.size() > 1 && pointList.size() < 5) {
            //绘制错误的状态,提示图案太简单
            errorPoint();
            if(onPatternChangeListener!=null){
                //图案太简单,返回null
                onPatternChangeListener.onPatternChange(null);
            }
        } else if (pointList.size() >= 5) {
            //绘制完成
            String password = "";
            if(onPatternChangeListener!=null){
                //遍历绘制点的集合
                for(int i = 0;i<pointList.size();i++){
                    //密码拼接
                  password = password+pointList.get(i).index;
                }
                onPatternChangeListener.onPatternChange(password);
            }
        }
    }
    

    在Activity中监听做出对应的判断

    Activity布局

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="com.zzj.lockviewdemo.MainActivity">
    
        <TextView
            android:id="@+id/act_main_lockhint"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="0.1"
            android:text="请绘制图案"
            android:layout_marginTop="30dp"
            android:textSize="20dp"
            android:textColor="@color/colorAccent"
            android:gravity="center_horizontal"
            />
        <com.zzj.lockviewdemo.views.LockView
            android:id="@+id/act_main_lockview"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
             />
    </LinearLayout>
    

    实现监听接口,进行判断

    @Override
    public void onPatternChange(String passwordstr) {
        if(passwordstr!=null){
            lockHint.setText(passwordstr);
        }else {
            lockHint.setText("至少五个图案");
        }
    }
    
    @Override
    public void onPatternStart(boolean isClick) {
        if(isClick){
            lockHint.setText("请绘制图案");
        }
    }
    

    最后效果图:


    Screenshot_1479457087.png Screenshot_1479457102.png Screenshot_1479457109.png

    有关文章:
    android开发图案解锁学习记录一(九宫格的绘制):http://www.jianshu.com/p/47c731df655a
    android开发图案解锁学习记录二(九宫格间连线时的onTouchEvent事件的处理):http://www.jianshu.com/p/931afdc0c1c3
    图案锁源码:http://pan.baidu.com/s/1kVK2zll

    相关文章

      网友评论

        本文标题:android开发图案解锁学习记录三(设置图案监听)

        本文链接:https://www.haomeiwen.com/subject/vnqspttx.html