本博文禁止随意转载
本来是先写的添加好友功能,但是还是决定先把数据录入的部分先写出来,免得bug太多
注册界面我选择用户可以自行设置用户名,密码,和手机号,密码需要一次确认,手机号在此后可以同样用于登录,添加好友等。

布局部分:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><TextViewandroid:layout_width="match_parent"android:layout_height="100dp"android:gravity="center"android:text="用户注册界面"android:textAppearance="@style/TextAppearance.AppCompat.Body1"android:textSize="30dp" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="90dp"android:orientation="horizontal"><TextViewandroid:layout_width="90dp"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:textSize="18sp"android:text="请输入用户名"/><EditTextandroid:id="@+id/name2"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:hint="10个字以内"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="90dp"android:orientation="horizontal"><TextViewandroid:layout_width="90dp"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:textSize="18sp"android:text="请输入密码"/><EditTextandroid:id="@+id/password2"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:hint=""/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="90dp"android:orientation="horizontal"><TextViewandroid:layout_width="90dp"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:textSize="18sp"android:text="请再次输入密码"/><EditTextandroid:id="@+id/password3"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:layout_gravity="center_vertical"android:hint=""/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="90dp"android:orientation="horizontal"><TextViewandroid:layout_width="90dp"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:textSize="18sp"android:text="请输入手机号"/><EditTextandroid:id="@+id/telephone1"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:layout_gravity="center_vertical"android:hint=""/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="70dp"android:gravity="center"android:orientation="horizontal"android:weightSum="1"><Buttonandroid:id="@+id/button1"style="@android:style/Widget.Holo.Light.Button.Small"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="0.2"android:background="#FFFCFC"android:text="注册" /></LinearLayout>
</LinearLayout>

线性布局里面套线性,加上TextView卡空白。老套路了,之前我在线性下的横向线性还是有点不熟,这里细致讲解一下,
比如说常见的TextView+EditText,用layout_height确定LinearLayout的竖直长度后,其下分布键只需要layout_height保持"wrap_content"即可,"wrap_content"可以让大小处于最舒适的纵宽比例,我试过还是用dp长度自定义,但是对于不同机型的手机有时候按钮会卡出屏幕外,所以,"wrap_content"永远滴神,对于TextView,layout_height可控制其横向距离,但是对于EditText,它的layout_height在保持前面的适应性效果不佳,这里用android:layout_weight="1"达到相同效果。如果LinearLatyout设置宽度太长,"wrap_content"后只需要控制 android:layout_gravity="center_vertical"就可以让控件处于居中位置。

活动部分:
这里因为要用到数据库,先讲讲常见的三种储存方式
(1)SharedPreferences储存
SharedPreference是一种轻量级的数据存取方法,以键值对来存储应用程序的配置信息,只能存储基本的数据类型:boolean,float,int,long,string,在本次应用中目前的实践部分是记住密码按钮,这部分会在登录中细讲。
(2)SQLite数据库和LitePal数据库
SQL的数据库建立套路
创表–>分析后编写建表语句–>自定义类继承SQLiteOpenHelper在onCreate中执行

LitePal的数据库建立套路
创表–>由对应关系分别生成getter和setter–>在自己配置的litepal.xml文件中添加相应标签声明映射类–>oncreate中直接用getDatabase()建立数据库

LitePal相比与SQL优秀的地方就在于他采用了对象映射的模式,整个代码敲下来感觉思路很清晰,包括在之后的数据库更新,添加,删除,查询等里面代码格式也用的更舒服,作为新手我还是在此项目中优先选用LitePal,

这里为了以后方便浏览就顺便把创建的数据表贴出来

package com.example.wechat;import org.litepal.crud.LitePalSupport;public class User extends LitePalSupport{private String name;private String phonenumber;private String password;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPhonenumber() {return phonenumber;}public void setPhonenumber(String phonenumber) {this.phonenumber = phonenumber;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}

这个开源库由于一直在更新,许多命名也有微小的改动,不能光看早期的书籍,对LitePal经验的时候最好配合官网教程食用。

public class Userregistration extends AppCompatActivity {private EditText editText1;//用来接受四个输入框中的数据private EditText editText2;private EditText editText3;private EditText editText4;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.layout_registration);Button button1=(Button)findViewById(R.id.button1);editText1=(EditText)findViewById(R.id.name2);//将控件id相关联editText2=(EditText)findViewById(R.id.password2);editText3=(EditText)findViewById(R.id.password3);editText4=(EditText)findViewById(R.id.telephone1);
  button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String inputText1=editText1.getText().toString();String inputText2=editText2.getText().toString();String inputText3=editText3.getText().toString();String inputText4=editText4.getText().toString();

因为定义的editText1,2,3,4只是被与之控件相关联,这里getText()检索相关联的文本信息,再用toString转化成文本

   if (((inputText1 == null || inputText1.equals(""))||(inputText2 == null || inputText2.equals("")))||(inputText3 == null || inputText3.equals(""))) {//判断用户是否输入内容String a="您输入的用户名或密码为空";Toast.makeText(Userregistration.this,a,Toast.LENGTH_SHORT).show();}else if((inputText4 == null || inputText4.equals(""))){String c="您输入的手机号为空";Toast.makeText(Userregistration.this,c,Toast.LENGTH_SHORT).show();}

这里作为一个初学者,讲一下Java空字符串与null的区别:null是根本没有分配空间,还不是一个实例化的对象,而""已经实例化,表示的是一个空字符串

                else if(inputText2.equals(inputText3)){String d="注册成功!";Toast.makeText(Userregistration.this,d,Toast.LENGTH_SHORT).show();User user1=new User();//创建框架用来接受信息user1.setName(inputText1);user1.setPassword(inputText2);user1.setPhonenumber(inputText4);user1.save();//Intent intent=new Intent(Userregistration.this,MainActivity.class);//此处识别到数据打到要求则注册成功,返回到登录界面startActivity(intent);}else{String b="您前后输入的密码不相同";Toast.makeText(Userregistration.this,b,Toast.LENGTH_SHORT).show();}}});}
}

这里就是创建数据库中数据的内容了,最开始犯了个很低级的错误,用双等号来做字符串的判断,字符串只能用equals()的方法来进行比较
总结:在注册部分自学完了数据库内容,LItePal确实牛逼,除了个人LitePal的使用没跟上最新版本出了点小问题和一些低级的错误外,这部分也还是相对比较简单。
优化部分: (1)能让用上传个人头像,可以加一个按钮调取相框权限实现。
(2)用户除了登录所需的必要信息外其他个人信息的传入,比如说男女,城市,年龄等,可以不用输入的方法而是下滑框来从所有情况中选择。
(3)Ui框架美化,比如说输入框的四角变圆润,背景图片等。
(4)没有考虑到同名用户的提醒,相同姓名的用户是不允许注册的。

(3)登录界面———注册界面相关推荐

  1. python做带数据库的登录界面_Python3 Tkinkter + SQLite实现登录和注册界面

    本文实例为大家分享了Python3 Tkinkter + SQLite 实现登录和注册界面,供大家参考,具体内容如下 Ubuntu14 + Python3.4 + Pycharm2018 一.设计数据 ...

  2. php+html+css制作非常好看网站登录与注册界面

    php+html+css制作非常好看网站登录与注册界面 php版本:5.2.17 phpstudy版本:v8.0 首先看一下效果图: 登录界面: (输入密码也是一样的!) 注册页面: 以上就是效果图 ...

  3. 代码技巧1.类似于登录、注册界面要判断登录账号是不是空,验证码是否正确等,怎么写比较舒服一点?

    类似于登录.注册界面要判断登录账号是不是空,验证码是否正确等,怎么写比较舒服一点? case R.id.btn_get_verify_code://点击获取验证//业务需求 点击获取验证码的地方加上图 ...

  4. js连接mysql注册界面_js实现登录与注册界面

    完成登录与注册页面的HTML+CSS+JS,其中的输入项检查包括: 用户名6-12位 首字母不能是数字 只能包含字母和数字 密码6-12位 注册页两次密码是否一致 html代码: 欢迎你,请先登陆! ...

  5. PHP+Mysql 实现用户登录,注册界面

    目标: 实现用户的登录 .注册 .修改密码.重置密码.添加书签,显示书签,删除书签 等功能 进一步目标: 实现对 用户输入信息的控制,具体表现在 对注册信息.登录信息的 的过滤,具有简单的防sql注入 ...

  6. Vue项目的登录和注册界面

    登录界面,Login.vue <template><div class="login_container"><div class="logi ...

  7. 用户登录和注册界面的实现

    实现的效果 整体代码 html文件 <!DOCTYPE html> <html lang="en"> <head><meta charse ...

  8. Visual Studio Code:Web前端——登录、注册界面、个人相册

    制作一个网页,有登录界面.注册界面和个人相册界面,注册成功后在登录界面登录成功后进入个人相册界面,个人相册里的所有图片是顺时针旋转的.若失败返回登录界面,登录界面和注册界面可相互切换. 代码: log ...

  9. 实现登录与注册界面(1号店)

    登陆界面 <!DOCTYPE html> <html>     <head>         <meta charset="utf-8"& ...

最新文章

  1. scrum看板管理产品线路图
  2. 什么是MySQL锁?有哪些锁类型?如何使用?
  3. shell / 获取当前工作目录的方法
  4. Docker入门-搭建docker私有仓库
  5. 大剑无锋之Hbase的优化【面试推荐】
  6. SAP UI5 应用开发教程之三十五 - 如何把本地开发的 SAP UI5 应用部署到 ABAP 服务器上
  7. Jmeter生成html格式测试报告
  8. 漫画:给女朋友介绍什么是 “元宇宙” ?
  9. JavaScript原生对象属性和方法详解——Date对象
  10. 原来PC界面临洗牌的背后原因是因为存储
  11. 【字符编码系列】字符,字符集,字符编码解惑
  12. 彩虹云商城 最新彩虹代刷V6.9.0免授权纯净完整版
  13. [图文教程]智学网电脑版下载_电脑上看智学网直播的几种方法
  14. 黑马Java笔记第一讲—java基础
  15. 亚马逊商品详情API接口(item_get-获得AMAZON商品详情接口),亚马逊API接口
  16. js 打印去掉页眉页脚页码_javascript 打印时去掉页眉页脚
  17. Python中的算数运算符
  18. mac删除ssh key_好用的mac终端命令仿真工具
  19. 电脑网络连接不上怎么办
  20. Vue项目提高页面加载速度的方法

热门文章

  1. 论述计算机网络前沿技术,介绍一些计算机网络前沿应用技术
  2. ECSHOP+wamp
  3. IDEA2022 搭建SpringMVC最新教程
  4. Object克隆的补充与总结
  5. 如何用 ChatGPT 写论文?
  6. 模拟微信接口时,提示“请在微信客户端打开链接”
  7. 这款多维数据分析工具超级好用
  8. 简易扫雷的C语言实现
  9. 万佳安联手腾讯云,传统安企开启 AI 新征程
  10. Web 开发者应该注意的一些事项