Android开发日常-编写一个登录界面
看完这篇文章你可以学到什么知识呢?
自定义组合控件
封装view,只暴露接口,模块独立,设计思想。
会用到正则表达式
如何禁止EditText在获取到焦点的时候拉起键盘
学会登录中获取验证码的倒计时效果
EditText的内容添加与删除
分析
我们为了做得好一点,首先需要分析一下!其实对于UI来说,也是可以封装起来的,比如说,我们这里面涉及到了手机号码的检查
涉及到验证码的检查,涉及到是否同意协议来控制按钮是否可用,这些动作我们都可以隐藏起来。把这些所有看得见的,都当成一个View,这个View具备这些功能。
然后适用者暴露接口:
1、获取验证码按钮被点击了;
2、协议内容被点击了;
3、登录按钮被点击了。
除此之外,应该没有其他动作给使用者使用了。
问题点:
1、因为这个界面是平板的界面,我们自己写了一个键盘输入,所以当我们的输入框获取到焦点的时候,不弹出键盘出来
2、做一个倒计时的效果
3、获取到焦点的edittext内容输入
实现
我们要实现这个类,要用一个很大的坑来填充这些内容,所以我们要写一个LoginUiView,继承自RelativeLayout。这个时候,需要实现一些方法:
有没有注意到,前两个构造函数都是this,表示调用自己的构造函数。不同的参数而已。这样子就可以确保不管是哪种方式创建这个类的,都会进入第三个类,也就是同一个入口。
这个类的全部代码如下:
代码讲解:
一开始,我们把view绑定到这个坑里头,也就是这句代码:
inflate,后面两个是重点,this,表示当前这个容器,也就是我们创建的LoginUiView,true表示绑定到这个容器里。所以,这行代码的意思是把这个布局文件里的内容,加载进来,放到这个viewGrop里面,也就是放到LoginUiView里面。
键盘的输入等会再说,接着我们是初始化事件:
我们有什么事件呢?
1、监听两个输入框内容的变化,第一个输入框,只有匹配了手机号码的规则,获取验证码才可以适用,否则是disable,也就是不能点击,除非手机号码是对的;监听第二个框框是用于判断有没有输入验证码,如果没有输入,那么,登录按钮不可以点击。
2、获取验证码这个按钮,点击以后要disable,并且开始倒计时,调用暴露的接口。
3、checkbox这个被点击以后,更新登录按钮是否可以点击,其实登录按钮要满足三个条件才可以点击:手机号码是对的,验证码有输入,同意适用协议。
4、登录按钮不需要做太多的动作,因为前面的动作已经做了相关的检查了。
布局文件的代码如下:
UI效果如下:
这里面有一个键盘,它的代码其实是个view来的,跟上面一个,编写一个组合控件。
其他的drawable文件:
从压缩包里下载吧,这里面就不在给大看这些不太重要的文件了。
使用
使用很简单,直接把登录的View的全路径名称,复制到要适用的地方即可。
接着,我们在Activity的代码里找到这个View,给它设置相关的接口实现即可。
到此代码结束,有问题到网站里发帖子吧!
测试
测试,手机号码的正确性,这个由测试人员来完成了,不过我们简单地使用一下。如果手机号码正确,才可以点击获取验证码!
源码下载地址:
算了,还是不发了吧!自己懂原理了,自己写去!
看都看了,关注一下吧!
关注都关注了,分享一下吧!