由于在公司被安排到android开发的工作任务,而且以前没有接触过安卓开发,所以只能去摸索一下了。接下来是我分享给大家的一个学习过程中的小案例:android实现登录注册
先给大家上实现的效果图:
代码具体实现
我所使用的开发工具是Android Studio,下面展示的是我这个案例的结构图:
- 几个具体的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