00:00
行,下面呢,我们来说一下这个手势密码这个事情,嗯,在网上找了一下,这呢,其实是有一个具体的一个应用啊,就是一个小的DEMO啊,大家打开以后呢,就在这个,呃,工具里边,框架这里边儿有一个。啊,这个叫get lock,这其实呢是具体的一个module啊,就是它实际上是能运运行的啊,哎,我们这呢,首先把它呢先导进来CTRLC。以一个module的方式来先导入。嗯,然后OK一下,真的是。哎,导入以后的话呢,我们就先看一看它这里边儿大概的一个逻辑啊,然后呢,我们就可以去。再修改一下可以应用了。啊,这个就是这个呢,你看这个标识你就知道它其实是可运行的啊,我们跑一下。
01:03
啊,这就进来了,这个页面的话呢,其实就是这里边儿的这样的一个案基体。哎,就他。在这个页面啊,这个页面里边呢,有两个button,一个呢叫设置手势密码,一个呢叫校验手势密码,我们选示这个叫啊先校验一下吧,校验它这里边提供说默认这个图案呢是Z,那就是这个。看这一校验啊,就进来了。啊写别的呢就不对啊,那你看这种手势密码,它这块这样写的啊。啊,你回头要不这样写就多了,他呢,还不对了。哎,看似好像说底层存的,其实就是一个一个图案一个方式啊,但实际上底层存的呢,其实很简单啊,就是按照你这样指的这样的一个顺序,我这呢,复制了一个123。456。嗯,789,那你刚才是这样的。哎,那就我去记录一下,对1235789。
02:00
啊,那这个呢,底层就存出来这样的自动串,当你下次再输入的时候呢,就跟之前那个串,看看是不是ES。啊行,这呢,是我们这个做一个校验的啊,也可以做一个设置。呃,设置的话呢,你看就是我这样进来,比如我设置成这个密码了,要么就是36927啊,然后你再写个不一样的,那你肯定能不一cos啊写个一样的。只有它了。哎,那这设置成功以后呢,我再做一个校验。那这时候你再输入这个Z呢,就不好使了,哎,我得输入刚才输入的这个就行。啊,那相当于我们校验的也好,还是你刚才设置也好,底层呢,是不是也相应的去维护了一个存储。是吧,哎,我这做一个设置,你把这个密码不就存到这儿了,那回我读的时候呢,哎,就是你校验的时候呢,我就看你输入的这个是不是跟我从SSP里边读出来这个是不是一样啊。就行了,这个默认的,默认的你可以说一开始就有,或者说呢,我这里边就写成一个动态的一个,呃,那个默认的形式就是底层没找着,我就从这里边找。
03:07
啊是默认的情况啊,底层找着了,找着了就以底层写的这个为准。啊,这呢就是我们的一个分析啊,啊,那实际上是什么样子呢?实际上也确实是这样的,比如说我们就看一下这个叫校验啊,校验这个进来的时候呢。我们看看这里边这个代码的逻辑。啊,它这里边之所以写这么多呢,就是因为你这个输入成功啊,输入失败啊,或者你在这个点的过程当中啊,这些视图那里颜色啊都在变化啊,这些呢,是需要你来考虑的啊这些事情。好,你看这里边啊,这是底层对应的这个shared preferences。啊,实际上是他这个DEMO一开始找到的时候有点问题啊,这是我给他加上去。嗯,这里边儿呢,我们提供了一个P呢,叫put code,这是它的一个默认值。啊,这不有个Z吗。嗯,然后呢,跟他又后来输入的这个内容,就我们保存在这儿了啊。
04:01
哎,跟他后来输入的内容的话呢,我们相当于做一个对比。嗯,对对对,做一个检验。这个input code在这,CTRLCCTRLF在这啊get创建个它在这呢,做一个输入。嗯,这呢相当于是我们获取一下底层的这样一个密码了,呃,如果底层零密码呢,发现有,呃有的话呢,就以有的这个为准,如果没有,没有就以这个Z为准,就相当于是个默认的情况啊啊那校验的时候呢,如果成功了那就走这个,失败了就走这个啊这两个呢,就有点类似于我们去联网请求一样啊,你看不到他具体这个方法调用了,都封装起来了,是直接告诉你成功还是失败。啊,这是这个叫校验,然后这个呢,Edit呢,就是做一个设置的。设置里边呢,其实大概的逻辑就是在这块呢啊。呃,你输入的这个内容。这呢你输入的这个啊,输入的时候它有个校验,校验这里边呢,就判断你是不是输入的这个长度少于四啊,这个呢,就是你字符串这个长度嘛,所以它要求你必须得至少得输四个点啊。
05:07
哎,不够,那就报报这个,哎,然后呢,够够就往下走啊,判断一下你是不是第一次出入。因为你我们输入的话呢,需要写两次哈,而且保证一样。嗯,是第一次输入的话呢,我就把第一次输入的这个内容呢,保存起来了。啊,保存起来了。啊,这里边儿我们就存到这个底层的这个SP里面了。啊,存储好啊,就第一次输入的时候呢,我就保存了,哎,同时呢,我们这还有个变量,把这个变量值再改一下啊,如果你不是出了,那就表示呢,你现在是第二次输入,第二次输入的话呢,跟第一次呢,比较一下是不是一样的,如果一样那就是设置成功,如果不一样,这时候呢,再提示用户说啊跟上次不一样啊,你就还得再去输入。啊,其实我们在第一次输入的时候呢,就记录了呃,这个值,而且把它都放在这个底层的SP里面了。
06:00
啊,其实我们这里主要要用的呢,就是这样两个ftd。啊,那现在它是一个具体的应用哈,我们还想用它。那我们实际上就把这两个呢导进来,但导进来以后呢,它可能会报错啊,我们先CTRLC一下。导到我们现有的这个it这里边CTRLV。OK。啊,就进来了啊,他报错,那报错呢,是因为我们用到了其中的一些具体的视图了,那他就存在人家创建的相应的其他这个包下了。啊,那这时候我们想用它其他的一个API,那要么呢就是整个粘过去,要么呢是把它造成一个。Li。哎,那我们可以这样做啊,我们现在呢,就把这样的一个model呢,给它改造成一个library啊。想想怎么改?这个这个这个是不是都没有用了。删除吧。嗯,然后呢,工程,呃,工程清单文件里边,你也不用去注册这些机结构了啊,整个呢,就是这样的一个空的了。
07:02
哎,然后呢,这个GR文件里边把它呢改一下。哎,改成个library,同时呢,应用是不是也没有这个ID了。哎,就降低了啊,然后呢,我们来一个同步。啊,把这个呢,如何将一个具体的应用改成是一个库,这个呢也要会啊。嗯,改完以后的话呢,咱们主要呢,就是需要在自己这里边去用,你就以一个这个库的方式呢,给它添加过来啊就行。啊,终于可以了啊,然后呢,我们来看一下。哎,此时呢,你看它就变成是一个库的标识。那然后呢,在我们当前这个model当中给他做一个添加。嗯,加号第三个这个。哎,添加以后的话呢,我们就可以关注一下,刚才我们导进来这样两个activity啊,这里边呢,它就不应该再去报错了。
08:03
行,他这个加的哈,嗯,加了以后的话呢,我们得想一下该怎么去调。哎,调人家提供好的这样两个it,哎这两个调的话呢,我们先来看这个艾啊,就是先得做个编辑,呃这个it一个调用呢,那肯定是就呃需要呢使用我们这个talk button了,呃这个呢,我们说的就是当你在进入这个哎,Me。Fragment的时候,哎,我们呢,就让他如果用户之前呢,嗯,相当于开启过这个密码保护啊,手势保护,那我们呢,在密fragment进入的时候呢,让他做一个校验。来做这样的一个操作啊。行这块呢就导进来了,你看这个错误呢,就都没有了。嗯,好,那接下来呢,我们就按照刚才这样的一个想法呢,去分析一下这个talk button呢,应该如何去设置,主要呢,我们目前呢,就开始针对这个方法来去实施了。行,这里边呢,再写的话呢,这个逻辑稍微呢有点绕啊,所以我们这呢,给大家继续。
09:03
画一个这样的一个流程。嗯,在这呢,我们去写一下啊,关于这个button。啊,去设置手势密码。哎,如何去设置,我们想一想。就这我先给他这样。行,用这个颜色吧。行这呢,我们先这样进来哈,看一下我们刚才说了,就是通过呢,用户去,呃点击这个talk button,它有这方的监听,根据这个监听到底是开了还是关了这样去区分,所以我们主要判断的其实就是这个it的这个变量。那我这呢,就把这个变量呢,先给他拿过来。
10:00
嗯,我们先把这个事呢给它分析清楚啊,那的话呢,它就有两种可能性,一种呢就是改成是false,一种呢改成是true。嗯,那比较简单的是哪个呀。First,对,相对简单一点啊。那我这呢,就先来分析一下这个false的状态。嗯,这样的哈,那如果是个false。如果是一个force,那就表示他不想开启,那这呢,我们一般都需要做点什么操作呀。先来一个toast,说你这个关闭了对吧,SP存储里边我们这个is open是不是得改成一个false啊,这一个还有吗。没有了,其实你这个当前的这个To Button。这个talk button是不是也改成是一个false的状态?那同学说这个诶,它本身就已经是一个这个嗯,关闭的了嘛,因为你一点击它关闭的,它就默认关闭了是吧?啊但是这个事呢,我们要考虑一下哈,至于说它要是自动关闭了,那我们就可以不用管了。
11:10
是不是也就这样?行,那如果说用户点击的时候呢,是把它给改成一个处了,表示呢,他现在要开启。哎,开启的时候怎么办呀。判断他是不是。诶对啊,我们呢,先判断一下他是不是第一次这个点击,就之前呢,他是不是保存过这个手势密码。嗯,之前是否保存过。哎,手势密码那很自然的就分成两种情况。哎,把这个往这一放,哎,分成两种,一个放一个出行,这个呢,我们也是先来说一下这个。
12:00
呃,先这个这个好像是这个处要稍微简单一些是吧。先写出吧,呃,如果之前保存过手势密码,那你点出表示呢,就是按照原来那个保存的是不是开启啊。哎,那我们这呢,就是不是还是考虑这三事儿吧,啊先做一个tos说提示说啊,你开启了密码保护啊,这个搞定啊,然后呢,存储里边呢,记录一下用户呢,当前给改成一个除了。哎,同时的话呢,如果你这个talk button呢。嗯,没有开,那你这也得去设置一下啊,它呢表示呢是一个出的。啊,如果他已经改成出来,那你就不用管了啊行,然后呢,看这个。哎,这是一个false表示,之前的没有存过。没有同步的话呢,那你现在是不是有可能用户就是想开啊,当然有可能他点错了哈,所以我们这时候呢,就可以先提示他一个是aler dial log。哎,提前这一个来Di lock,然后问用户啊是否。
13:03
啊,需要啊,现在呢,设置哎手势密码。哎,其实它是不是要现在设置,因为你以前没设置过,那很自然的就是有这样的两种情况。哎,往这一放,他要选false,那就省事了,他现在还不想开。他会想开。那你这块呢,是不是就可以按照这样的一个逻辑来。呃,他现在还不想开,那这时候你兔也说,哎就是关闭吧,因为你本身其实这时候你已经是把它先打开了啊打开呢,只不过说呃,你这个a dialog呢,你就设置成是一个呃false了,False以后呢,我这时候呢,就是to也是用户有关了,或者你这边to也可以不写了,呃把这个超过button呢,还得给它改成false。然后呢,Is open呢也得改成。啊,这是这样的,那如果用户说行,我现在设置。
14:02
那就是出。那这个时候呢?是不是更偏向于是这个呀。嗯,我点这个,嗯。给我整成这个旧的了啊,这个CTRLCCTRLV。嗯,他现在呢想设置。想设置的话呢,那以前还没设置过,那我就是诶开启一下这个密码的一个设置,然后呢,这呢也改成个处,那这呢也改成一个处,那同时呢,是不是你得去start一个新的XT啊,是不是就开我们刚才那个设置密码的那个G那个。Get那个叫edit是吧,艾来把它呢做一个启动。那整个这个逻辑的话呢,我们就把它捋顺清楚了。那这个清楚以后呢,你就照着这个逻辑呢,去写我们这里边儿的。哎,这个结构就可以了。写他就行啊。
我来说两句