前言
终于录视频了
【Android】登录注册(复杂版)
原地址 点击这里
实现效果如下
项目源代码GitHub地址(源码中有详细注释):https://github.com/littlecurl/LoginDemo
### 交代一些资源
我曾经写过一篇受大家欢迎的博客:
现在这篇文章是原先那篇的升级版,实现了前后端分离。
配套的后端服务器的笔记如下:
后端视频链接:【慕课网 · 免费课】龙虾三少《SpringBoot构建电商基础秒杀项目》
我就是跟着三少的视频学的注册登录的后端服务,墙裂推荐大家去听一听三少的课,讲的是相当的棒!听课的时候,记得把宿舍门关好,这样你就像我一样也是三少的关门弟子了!O(∩_∩)O哈哈~,三少还有一个升级课程,是收费的,条件允许的小伙伴可以去参观一下《Java电商秒杀系统深度优化 从容应对亿级流量挑战》
另外要想真正学会我这个登录注册的Demo推荐你看几本书:
-
《Spring 实战(第四版)》
-
《SpringBoot实战》
-
《看透SpringMVC源代码分析与实践》
-
《第一行代码(第二版)》
闲谈几句
话说去年的这个时候刚刚接触Android,有幸在一开始就看到郭神的《第一行代码(第二版)》,然后我连着一个星期,每天最早都是晚上三点睡,白天八点醒,中间不睡觉的学习Android,因为我习惯在看书的时候关上宿舍门,所以我也算是郭神的关门弟子了,O(∩_∩)O哈哈~
我在开发这个项目之前,看过大量的书籍和博客,都没有适合的源码。于是我带着问题去问郭神,我问了两个问题,郭神答了两个问题,因此我很受鼓舞,于是,又是几乎通宵了一周,做出来现在这个Demo,我就是想做出来一个别人认为是奇葩,实际是因为我没钱租服务器,而迫不得已用自己电脑当服务器来学习的项目。
本文知识点
- Gradle依赖
- Android布局
- 利用正则表达式进行输入校验
- 自动登录的实现
- okhttp异步发送POST请求
- Gson解析okhttp回调响应的JSON数据
- 在子线程中更新UI,自动填写验证码
- 内网穿透,真机安装运行体验
如果把这个版本的登录注册掌握了,基本的前后端联合开发就可以入门了。
正文
一、Gradle依赖
1、Gradle版本号问题
本来Android布局应该是在第一的位置来写的,但是Gradle依赖和打开项目的时间有关系,为了能节省大家打开一个项目的时间,我把Gradle放在第一位来讲了。
我用加粗的格式说一句来表示强调:当你从网上下载下来一个项目时,先别急着用AndroidStudio打开。
在打开一个新项目之前,最好先手动修改两个版本号。如下图所示
对应上面两个文件,在目录中显示如下
怎么改呢?很简单,就是你先打开一个你以前写过的项目,进去看看你电脑能轻松打开的项目的这两个版本号分别是多少,然后再用记事本打开从网上下载下来对应的文件,修改版本号为你本地已有的版本号,最后再打开项目。
之所以这样做是因为,如果本地没有对应的Gradle,下载的话很慢,而且一旦下载,很难暂停。不如花两分钟手动修改一下版本号节省时间。
当然,对于某些项目,有可能修改之后,导致无法编译。那样的话,没法,只能下载指定的Gradle版本了。
最后,有些人不在乎浪费时间,比如我,我经常忘记修改,导致我电脑现在几乎下遍了所有的Gradle版本,然后现在可以随意打开项目了。
2、Gradle的作用
如果学过JavaEE的同学应该都知道Maven,它可以帮我们管理依赖的jar包,实现自动导入。Gradle的作用和Maven一样,只不过Maven使用XML语言来实现的,Gradle是用Groovy语言来实现的。后者明显比前者简洁许多。Android中导入jar包依赖的地方如下,比如我这个登录注册就使用了两个第三方库okhttp和Gson,这些库都可以在Maven仓库:http://mvnrepository.com搜索到。别忘了修改后需要点一下右上角的Sync Now才能生效。
3、手动刷新Gradle依赖
如果你的项目里,出现了大面积的红字,有可能就是Gradle没有工作或者工作到一半不小心被你中途暂停了。解决方法就是如下,重新让Gradle跑一下,编译项目。
4、查看具体依赖的jar包
有时候我们会遇到jar包冲突的bug,或者说就是想单纯的看看我那简单的一句implementations到底导入了多少个jar包,这也是为什么Groovy语言的Gradle和XML语言的Maven相比,前者就能如此简洁。这时候,就可以去AndroidStudio右侧边栏,点开Gradle工具条,然后找到app底下的AndroidDependencies,双击运行之后,就可以去控制台查看你这个项目到底依赖了多少个jar包。
学习Gradle,道阻且长,不过对于目前这个项目,我上面介绍的已然够用了。
二、Android布局
Android布局开发有两种方式,Design和Text
我最近才发现有些同学因为没跟对老师,每次写布局的时候都是直接手敲代码,原因就是老师就这么教的。
其实那样并不好,一方面,虽说常用的控件就那么几个但每个控件的属性可是一大堆的,直接写代码容易漏掉某个属性;另一方面,通过Design可视化进行布局,能够获得及时反馈,而且一拖即成会感觉很爽。
所以推荐大家首先是要Design方式拖拉出来界面,如果需要微调的话,或者拖拉不能实现了,再使用代码进行改动。
因为这个属于操作性比较强的,如果有机会,我会录个视频分享给大家,这里我就给大家贴一张图吧
这次登录界面我用的是ConstraintLayout,以实现不同分辨率手机的自适应