本博文禁止随意转载
登录界面只需要从数据库中读取所有用户信息进行依次对比,有相同的则登录成功进入用户的主界面,吐槽一下,微信做的Ui是真的烂,可能这就是成年人的社交软件的标准吧(

布局部分

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="fill_parent"android:layout_height="fill_parent"tools:context="com.example.wechat.MainActivity"android:orientation="vertical"><TextViewandroid:layout_width="match_parent"android:layout_height="100dp"/><ImageViewandroid:id="@+id/imageView"android:layout_width="match_parent"android:layout_height="61dp"app:srcCompat="@android:drawable/sym_def_app_icon" /><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/name"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:layout_weight="1"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/password"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:layout_gravity="center_vertical"android:inputType="textPassword"/></LinearLayout><Buttonandroid:id="@+id/button1"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="登录" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="60dp"android:weightSum="1"android:orientation="horizontal"><CheckBoxandroid:id="@+id/remember_password"android:layout_width="60dp"android:layout_height="wrap_content"android:layout_weight="0.2"android:text="记住密码"/><CheckBoxandroid:id="@+id/at_login"android:layout_width="60dp"android:layout_height="wrap_content"android:layout_weight="0.2"android:text="自动登录"/></LinearLayout><TextViewandroid:layout_width="match_parent"android:layout_height="10dp"/><LinearLayoutandroid:layout_width="match_parent"android:layout_height="70dp"android:gravity="center"android:orientation="horizontal"android:weightSum="1"><Buttonandroid:id="@+id/button2"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>

上面的imageView可以以后放logo的图片或者显示输入只用户名后显示对应用户的头像,这里暂时不做处理,下面两个LinearLayout也与注册部分的形式基本相同,这里需要讲的是控制按钮大小的部分,同样是包含在LinearLayout中,这次在LinearLayout中加入android:weightSum=“数字”,这样,改变button中layout_weight=中数字与之的比例就可以改变按钮的大小了,在本次操作中还发现可以直接在AS的design部分中对控件进行众多操控,比如说这里注册的按钮的颜色就是直接改的。
还再强调一下android:gravity和layout_gravity的区别android:gravity是用于设置View中内容相对于View组件的对齐方式,而android:layout_gravity用于设置View组件相对于Container(LinearLayout等)的对齐方式。
活动部分

下面有大部分的解释我是直接写在代码后的,另起几行写太麻烦,而且阅读起来效率不高,有知识点类型或者设计角度的内容会单独讲

public class MainActivity extends AppCompatActivity {private EditText editText1;//这两个用来接收输入框内容private EditText editText2;private CheckBox rememberPass;//这三个全部用来供记住密码使用private SharedPreferences pref;private SharedPreferences.Editor editor;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//LitePal.deleteAll(User.class);这行代码的作用是清除对应数据库中的全部数据,调试的时候会用到editText1 = (EditText) findViewById(R.id.name);editText2 = (EditText) findViewById(R.id.password);
     pref= PreferenceManager.getDefaultSharedPreferences(this);//调用SharedPreference,但是好像这种书写形式目前不被推荐,在AS中被划横线,但是还能运行rememberPass=(CheckBox)findViewById(R.id.remember_password);//与相应控件的id关联起来boolean isRemember=pref.getBoolean("remember_password",false);//与键的状态相对应,false就表明默认时候是未被选中的if(isRemember){//当记住密码被选中后String account=pref.getString("account","");//读取此时候输入的两行内容String password=pref.getString("password","");editText1.setText(account);//此出将两行代表记录性的字符串与对应输入行相关联,并且因为有pref,已经包存数据了editText2.setText(password);rememberPass.setChecked(true);//上面的按键判断不具有记录性,而这里具有记录性}

SharedPreference在前面注册部分讲过,主要就是用来储存用户的一些默认偏好

 Button button1 = (Button) findViewById(R.id.button1);button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String inputText1 = editText1.getText().toString();//和前面的注册相同形式,不解释了String inputText2 = editText2.getText().toString();int i=0;List<User> users = LitePal.findAll(User.class);//创建list,下面遍历所有用户数据for (User user1 : users) {if (((inputText1.equals(user1.getName()))||(inputText1.equals(user1.getPhonenumber()))) && (inputText2.equals(user1.getPassword()))) {String a = "登录成功!努力加载中......";Toast.makeText(MainActivity.this, a, Toast.LENGTH_SHORT).show();editor=pref.edit();//if(rememberPass.isChecked()) {editor.putBoolean("remember_password",true);//此时调取数据后知道之前选择了记住密码,你再次打开软件后会再将对应键变为点击状态editor.putString("account",inputText1);//因为前面已经将数据出口与输入行相关联了,这里直接调取出来editor.putString("password",inputText2);}else{editor.clear();//未点击记住密码的时候}editor.apply();//将调取出来的数据显现Intent intent = new Intent(MainActivity.this, SecondActivity.class);startActivity(intent);break;} else {int e=(users.size()-1);if(i>=e) {//相当于检索完了所有用户后才能确定是用户输入的有问题String b = "用户名或密码错误";Toast.makeText(MainActivity.this, b, Toast.LENGTH_SHORT).show();}}i=i+1;}}});

这里登录因为用户数量不多,就不考虑算法效率了,直接遍历,而且前面注册也说了还没有考虑重名等情况,暂时能用,但是进入到用户主界面后(四个碎片那部分),点手机左下角的退出,我觉得理想情况下是直接整个软件退出,而不是返回到上一个活动,这里整个运行链都没有考虑到活动的destroy。

    Button button2 = (Button) findViewById(R.id.button2);//打开注册按钮的配置,老套路了button2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this, Userregistration.class);startActivity(intent);}});
}}

总结:感觉登录还是做的相对简陋的,经不起深度的测bug,但是基本功能都能实现
优化部分:(1)当多个用户都在同一设备使用此软件的时候,点击用户名的输入框应该可以显示一个小的下滑框显示曾经在此处登录过的用户的记录,并且可以手动删除记录。
(2)像qq,微信那样,当用户有一次登录成功的过程之后,登录界面应该可以直接调取用户设置的个人头像显示在中上方或者输入框左边。
(3)还是Ui美化,做的挺丑的。
(4)最后软件基本成型后把各个活动的destroy补上,目前为了方便调试程序还是暂时不要。

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

  1. c#web窗体登录界面登录注册以及密码找回发送邮箱功能

    c#web窗体登录界面登录注册以及密码找回发送邮箱功能 效果图如下: 1.登录界面aspx代码 <%@ Page Language="C#" AutoEventWireup= ...

  2. ftp服务器老是显示登录界面,登录ftp服务器总提示登陆框

    登录ftp服务器总提示登陆框 内容精选 换一换 已成功登录Java性能分析.待安装分析辅助软件的服务器已开启sshd.Java性能分析优先选用非交互shell(non-interactive shel ...

  3. FineReport中如何自定义登录界面

    在登录平台时,不希望使用FR默认的内置登录界面,想通过自定义登录界面实现登录操作,内置登录界面如下图: 登录界面,获取到用户名和密码的值,发送到报表系统,报表服务带着这两个参数访问认证地址进行认证. ...

  4. ios 仿电脑qq登录界面_1、IOS开发--iPad之仿制QQ空间(登录界面搭建+登录逻辑实现)...

    开始搭建登录界面 登录界面效果图: 步骤开始: 设置辅助窗口的位置在下方 快捷键option,然后拖拽复制之后: 这里就直接省去了将背景颜色改为经典黑了. 到这里QQ空间的登录界面搭建完毕. 下面进行 ...

  5. 连接oracle数据库,新建用户登录界面

    一.下载jar包 下载oracle驱动包:ojdbc6.jar,放于如下位置: 测试代码: package com.test;import java.sql.Connection; import ja ...

  6. excel制作窗体查询界面_利用 VBA窗体制作excel登录界面

    thisworkbook代码 Private Sub Workbook_Open()UserForm1.ShowEnd Sub userform代码 Private Sub CommandButton ...

  7. QT: 为自己的QT程序添加一个登录界面

    接了一个私活,做完后非要加一个这个功能,自己尝试着做了一下,模块都是独立的,不会和主界面有多少关联,主界面也基本没有改动.总体上还是属于自己瞎琢磨的一个方法,可能不是非常的专业,不过总体上就是简单快捷 ...

  8. C++单链表学生管理系统(有登录界面)

    C++单链表 学生管理系统 这个程序是我好几天的心血,欢迎大家指正!!! 该程序需要新建三个txt文件.1.login.txt用来存放注册用户的用户名与密码. 2.login2.txt用于登录时将lo ...

  9. 实训|第三天Linux登录界面的修改以及Richard Stallman、自由软件运动

    在写博客之前我想说两点: 承认一个错误,昨天写的实训第二天,我把redhat6.7写成了Linux6.7,感谢热心人士的指出! 昨天写的文章名字太长了,今天改善,内容感觉表述不全,希望各位谅解! 官方 ...

最新文章

  1. 160630、五句话搞定JavaScript作用域
  2. 利用NPP-VIIRS夜光数据识别中国收缩城市
  3. springboot知识
  4. 基于词典的正向最大匹配中文分词算法,能实现中英文数字混合分词
  5. Java工程师学习步骤
  6. 【Laro】- About Game Engine
  7. 剑指 Offer 43. 1~n 整数中 1 出现的次数(数位dp)
  8. spring 工作流引擎_带Spring的简单工作流引擎
  9. 前端笔记----定位
  10. 4位院士的4个正确决定,成功扭转疫情!建议人人都该知道
  11. 计算机专业英语读书报告,英语读书报告怎么写
  12. 求解这个矩阵形式的HTML5线性方程组
  13. Windows下使用emacs+cscope
  14. 蓝桥杯 ADV-197 算法提高 P1001
  15. 资产信息自动化收集系统 Venux
  16. Eclipse修改svn地址
  17. 圆锥曲线的定值定点问题
  18. 曾经写过得太监小说2《天道》
  19. 使用O2OA二次开发搭建企业办公平台(十三)流程开发篇:报销审批流程表单开发
  20. RSS/RPS/RFS究竟是个什么东西

热门文章

  1. 视频编码解码(x264参数)
  2. MC/DC覆盖的计算总结
  3. 目前最精准的Android开源计步器
  4. matlab 工具箱下载地址
  5. matlab---s函数讲解之二连杆动力学仿真
  6. word的大表格中自动换页
  7. Java 不允许在一个范围大的作用域下重新定义同名变量
  8. 解决U盘中文件全部变成快捷方式的问题
  9. 路由配置url跳转传参_如何配置路由器以进行网络范围的URL记录
  10. eclipse juno(4.2) 集成 maven 插件