Android实现登录和注册

2022-08-26 09:18:41

由于在公司被安排到android开发的工作任务,而且以前没有接触过安卓开发,所以只能去摸索一下了。接下来是我分享给大家的一个学习过程中的小案例:android实现登录注册

先给大家上实现的效果图:

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

代码具体实现

我所使用的开发工具是Android Studio,下面展示的是我这个案例的结构图:
在这里插入图片描述

  1. 几个具体的Activity代码
package com.e.userinfo;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.*;import androidx.appcompat.app.AppCompatActivity;import org.litepal.LitePal;import java.util.List;/**
 * 用户登录
 */publicclassLoginextendsAppCompatActivityimplementsView.OnClickListener{private EditText mAccount;//用户名编辑private EditText mPwd;//密码编辑private Button mRegisterButton;//注册按钮private Button mLoginButton;//登录按钮private CheckBox mRememberCheck;publicvoidonCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.login);//通过id找到按钮
        mRegisterButton=(Button)findViewById(R.id.login_btn_register);
        mLoginButton=(Button)findViewById(R.id.login_btn_login);//通过id找到editText的值
        mAccount=(EditText)findViewById(R.id.login_edit_account);
        mPwd=(EditText)findViewById(R.id.login_edit_pwd);//监听按钮
        mRegisterButton.setOnClickListener(this);
        mLoginButton.setOnClickListener(this);}@OverridepublicvoidonClick(View v){switch(v.getId()){case R.id.login_btn_login://这个是登录按钮login();break;case R.id.login_btn_register://这个是注册按钮
                Intent intent_Login_to_Register=newIntent(Login.this,Register.class);//切换Login Activity至User ActivitystartActivity(intent_Login_to_Register);break;}}/**
     * 登录
     */publicvoidlogin(){
        String user=mAccount.getText().toString().trim();//获取用户名
        String pwd=mPwd.getText().toString().trim();//获取密码
        List<UserInfo> list= LitePal.where(" userName = ? and userPwd = ?",user,pwd).find(UserInfo.class);if(list.size()>0){//登录成功
            Intent intent=newIntent(Login.this,InfoActivity.class);//切换界面
            intent.putExtra("userName",user);//将用户名传到InfoActivitystartActivity(intent);
            Toast.makeText(this,"登录成功",
                       Toast.LENGTH_SHORT).show();}else{//登录失败
            Toast.makeText(this,"登录失败",
                       Toast.LENGTH_SHORT).show();}}publicbooleanisUserNameAndPwdValid(){
        String userName= mAccount.getText().toString().trim();//获取当前输入的用户名和密码信息
        String userPwd= mPwd.getText().toString().trim();if(userName.equals("")){//用户名为空
            Toast.makeText(this,"用户名不能为空",
                    Toast.LENGTH_SHORT).show();returnfalse;}elseif(userPwd.equals("")){
            Toast.makeText(this,"密码不能为空",
                    Toast.LENGTH_SHORT).show();returnfalse;}returntrue;}@OverrideprotectedvoidonResume(){super.onResume();}@OverrideprotectedvoidonDestroy(){super.onDestroy();}@OverrideprotectedvoidonPause(){super.onPause();}}

上面是Login中的代码,接下来是Register的代码

package com.e.userinfo;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import androidx.appcompat.app.AppCompatActivity;import org.litepal.LitePal;/**
 * 用户注册
 */publicclassRegisterextendsAppCompatActivityimplementsView.OnClickListener{private EditText mAccount;//用户名编辑private EditText mPwd;//密码编辑private EditText mPwdCheck;//密码编辑private Button mSureButton;//确定按钮private Button mCancelButton;//取消按钮publicvoidonCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.register);//找到按钮
        mSureButton=(Button)findViewById(R.id.register_btn_sure);
        mCancelButton=(Button)findViewById(R.id.register_btn_cancel);//找到editText的值
        mAccount=(EditText)findViewById(R.id.resetpwd_edit_name);
        mPwd=(EditText)findViewById(R.id.resetpwd_edit_pwd_old);
        mPwdCheck=(EditText)findViewById(R.id.resetpwd_edit_pwd_new);//监听按钮
        mSureButton.setOnClickListener(this);//注册界面两个按钮的监听事件
        mCancelButton.setOnClickListener(this);}@OverridepublicvoidonClick(View v){switch(v.getId()){case R.id.register_btn_sure://确认按钮的监听事件register();break;case R.id.register_btn_cancel://取消按钮的监听事件,由注册界面返回登录界面
                Intent intent_Register_to_Login=newIntent(Register.this, Login.class);//切换User Activity至Login ActivitystartActivity(intent_Register_to_Login);finish();break;}}/**
     * 注册
     */publicvoidregister(){if(isUserNameAndPwdValid()){
            String userName= mAccount.getText().toString().trim();
            String userPwd= mPwd.getText().toString().trim();long id= System.currentTimeMillis();boolean isExist= LitePal.isExist(UserInfo.class,"userName = ? and userPwd = ?", userName, userPwd);if(isExist){//用户已经存在
                Toast.makeText(this,"用户已经存在,不能重复注册",
                        Toast.LENGTH_SHORT).show();return;}
            UserInfo userInfo=newUserInfo(userName, userPwd, id);boolean flag= userInfo.save();//保存数据if(flag){//保存数据成功
                Toast.makeText(this,"注册成功",
                      Toast.LENGTH_SHORT).show();
                Intent intent_Register_to_Login=newIntent(Register.this, Login.class);//切换User Activity至Login ActivitystartActivity(intent_Register_to_Login);finish();}else{
                Toast.makeText(this,"注册失败", Toast.LENGTH_SHORT).show();}}}publicbooleanisUserNameAndPwdValid(){
        String userName= mAccount.getText().toString().trim();//获取当前输入的用户名和密码信息
        String userPwd= mPwd.getText().toString().trim();if(userName.equals("")){//用户名为空
            Toast.makeText(this,"用户名不能为空",
                    Toast.LENGTH_SHORT).show();returnfalse;}elseif(userPwd.equals("")){
            Toast.makeText(this,"密码不能为空",
                    Toast.LENGTH_SHORT).show();returnfalse;}returntrue;}@OverrideprotectedvoidonResume(){super.onResume();}@OverrideprotectedvoidonDestroy(){super.onDestroy();}@OverrideprotectedvoidonPause(){super.onPause();}}

接下来是InfoActivity的代码

package com.e.userinfo;import android.content.Intent;import android.os.Bundle;import android.widget.TextView;import androidx.appcompat.app.AppCompatActivity;/**
 * 展示用户信息
 */publicclassInfoActivityextendsAppCompatActivity{private TextView tv1;@OverrideprotectedvoidonCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.info);
        tv1=findViewById(R.id.info_welcome);
        Intent getData=getIntent();
        Bundle bundle=getData.getExtras();//.getExtras()得到intent所附带的值
        String userName=bundle.getString("userName");//通过key获取相应的value
        tv1.setText("欢迎您:"+userName);//给页面赋值}}

2.实体类代码

package com.e.userinfo;import org.litepal.crud.LitePalSupport;/**
 * 用户信息
 */publicclassUserInfoextendsLitePalSupport{private String userName;//用户名private String userPwd;//用户密码privatelong id;//用户ID号public StringgetUserName(){return userName;}publicvoidsetUserName(String userName){this.userName= userName;}public StringgetUserPwd(){return userPwd;}publicvoidsetUserPwd(String userPwd){this.userPwd= userPwd;}publiclonggetId(){return id;}publicvoidsetId(long id){this.id= id;}publicUserInfo(String userName, String userPwd,long id){this.userName= userName;this.userPwd= userPwd;this.id= id;}publicUserInfo(){}}

3.数据库配置
在这个案例中我所用到的数据库是litepal,接下来是具体的配置内容:

  • 首先要在build.gradle中引入依赖:
implementation'org.litepal.android:java:3.0.0'
  • 然后需要新建一个包,里面包含一个名为litepal.xml的文件
    在这里插入图片描述
  • xml文件具体内容如下:
<?xml version="1.0" encoding="utf-8"?><litepal><dbname value="user"></dbname>//数据库名称<version value="1"></version>//数据库版本号<list><mappingclass="com.e.userinfo.UserInfo"></mapping>//用于设定所有的映射模型,即你定义数据库表的类名路径</list></litepal>
  • MyApp类内容:
package com.e.userinfo;import android.app.Application;import org.litepal.LitePal;publicclassMyAppextendsApplication{@OverridepublicvoidonCreate(){super.onCreate();
        LitePal.initialize(this);}}
  • 最后不要忘了在AndroidManifest.xml里面加入以下内容:
    在这里插入图片描述
  • 下面直接附上我的AndroidManifest.xml的代码:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.e.userinfo"><application
        android:name=".MyApp"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="用户信息管理"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"><activity
            android:name=".Login"
            android:label="用户登录"><intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/></intent-filter></activity><activity android:name=".InfoActivity" android:label="用户信息"></activity><activity android:name=".Register" android:label="用户注册"></activity></application></manifest>

4.layout下的几个xml文件代码如下:
login.xml文件内容

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="15dp"
    android:background="@mipmap/loginback"><!--此处的背景图可自行添加到mipmap下-->><RelativeLayout
        android:id="@+id/login_view"
        android:layout_width="400dp"
        android:layout_height
  • 作者:forever@Mr.Tang
  • 原文链接:https://blog.csdn.net/weixin_44456889/article/details/107108836
    更新时间:2022-08-26 09:18:41