Android

您所在的位置:网站首页 okay学生空间登录页 Android

Android

2024-01-14 11:21| 来源: 网络整理| 查看: 265

前言

自学Android有段时间了,觉得是时候尝试写一些小demo尝试一下。这次尝试写了一个登录注册功能,大概涉及以下几个知识点:使用LitePal操作数据库、颜色渐变、嵌套布局。其他的皆是比较正常的知识。话不多说,进入正题。

正文 UI界面 登录

先来说说登录界面的实现。 在布局上最外层我使用了LinearLayout,这也是我在布局中使用最多也是最熟悉的布局,所以我首选这个,比较方便,里面我嵌套了两个LinearLayout和一个RelativeLayout。算是比较简单吧,也是经过我多次尝试之后选出的最佳方案。上面有的东西就是平常大家常见的功能,头像显示,记住密码忘记密码这些东西,我还特意加了三个其他登陆方式,当然这个没有实现,知识UI上有而已,不过后续完善的时候可以实现。同样的记住密码和忘记密码功能我也没来得及实现。最近比较忙,还要上其他课。话不多说给大家放出登陆界面代码。可结合效果图进行参考。

登陆界面

注册

注册界面实现和登录界面大同小异,这里就直接给出代码和效果图。

注册界面

注册功能的实现

注册功能其实非常简单,给注册按钮添加点击事件方法,在方法中获取EditText中输入的数据。然后进行两次密码的比较,如果一样则进行账号密码的存储并返回账号自动填充,然后销毁当前Activity,代码如下。

public class Register extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_register); Button re_register = findViewById(R.id.re_register); re_register.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { EditText username = findViewById(R.id.re_username); EditText password = findViewById(R.id.re_password); EditText passwordAffirm = findViewById(R.id.re_affirm); String inputUsername = username.getText().toString(); String inputPassword = password.getText().toString(); String inputAffirm = passwordAffirm.getText().toString(); UserData user = new UserData(); if (inputAffirm.equals(inputPassword)) { //存储账号密码 user.setUsername(inputUsername); user.setPassword(inputPassword); user.save(); //传回账号 Intent intent = new Intent(); intent.putExtra("username", inputUsername); setResult(RESULT_OK, intent); finish(); } else { Toast.makeText(Register.this,"两次密码不一致", Toast.LENGTH_SHORT).show(); } } }); } } 登录功能实现

从注册界面那里返回的账号自动进行填充,然后只需要用户填充密码即可进行登录,就不多赘述,代码如下。

public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //创建数据库 Connector.getDatabase(); TextView register = findViewById(R.id.lg_register); register.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, Register.class); startActivityForResult(intent, 1); } }); //登录 Button loginButton = findViewById(R.id.lg_login); loginButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { List users = LitePal.findAll(UserData.class); EditText username = findViewById(R.id.lg_username); EditText password = findViewById(R.id.lg_password); //账号密码匹配 for (UserData user : users) { if (user.getUsername().equals(username.getText().toString()) && user.getPassword().equals(password.getText().toString())) { Intent intent = new Intent(MainActivity.this, HomeActivity.class); startActivity(intent); onDestroy(); } else { Toast.makeText(MainActivity.this,"账号或密码错误!",Toast.LENGTH_SHORT).show(); } } } }); } @Override protected void onDestroy() { super.onDestroy(); } //接受传回来的账号 @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case 1: if (resultCode == RESULT_OK) { final EditText loginUsername = findViewById(R.id.lg_username); String returnUsername = data.getStringExtra("username"); loginUsername.setText(returnUsername); loginUsername.setSelection(returnUsername.length()); } break; default: } } }

这里之所以可以接受注册界面传回来的账号,是因为在启动实现注册功能的Activity时用到了startActivityForResult()方法,startActivityForResult()接受两个参数,第一个参数还是Intent,第二个参数是一个请求码。用于在之后的回调中判断数据的来源。由于我们使用的是startActivityForResult()方法来启动注册Activity,在销毁活动之后会回调上一个活动的onActivityResult()方法,因此需要在登录Activity中重写这个方法来得到返回的账号。 其中还使用到了其他功能,一一讲解如下。

数据库功能实现

数据库功能的使用过于繁杂,在这里详细讲解的话有点喧宾夺主,这里请参考我的另外一篇博文,博文中使用的代码就是基于本次登陆注册功能实现的。点击跳转

背景颜色渐变

在登录和注册中我都使用了渐变的背景,因为最近学到了,干脆直接拿来使用。首先在drawable下新建两个xml,一个用于登陆界面使用,一个用于注册界面使用,代码如下:

在这里插入图片描述

startColor为开始渐变颜色,endColor为结束渐变颜色,angle是渐变的角度。这里可以自行调试。然后就可以直接使用android:background="@drawable/background_gradient"进行添加。 所有内容都讲解完毕了,这其中有很多不足,希望各位大神看到可以指点一二。 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3