用Android Studio 简单的实现登录注册

目录

一、登录界面

activity_login.xml 布局代码:

login.java 代码:

二、注册界面

activity_register.xml布局代码:

register.java 代码:

三、修改密码(忘记密码 ?)

activity_update_password.xml布局代码:

UpdatePassword.java 代码:

四、SQLite 与 SharedPreferences 操作

QQHelper.java 创建SQLite数据库:

QQperate.java 对SQLite数据库进行增、改、查操作:

SaveQQ.java保存QQ账号与密码:

五、登录成功界面

六、 styles.xml 和AndroidManifest.xml

styles.xml 代码:

AndroidManifest.xml 代码:


一、登录界面

activity_login.xml 布局代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><RelativeLayoutandroid:background="@drawable/bgqq"android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:id="@+id/imgfile"android:layout_width="100dp"android:layout_height="100dp"android:layout_centerHorizontal="true"android:layout_marginTop="150dp"android:padding="2dp"android:background="#ffffff"app:srcCompat="@drawable/head" /><TextViewandroid:id="@+id/qq_name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_below="@+id/imgfile"android:layout_marginTop="5dp"android:textSize="24sp"android:text="@null" /><LinearLayoutandroid:id="@+id/zhang"android:layout_width="wrap_content"android:layout_height="40dp"android:layout_centerHorizontal="true"android:layout_below="@+id/qq_name"android:layout_marginTop="40dp"android:background="#F8F3E5"android:orientation="horizontal"><TextViewandroid:id="@+id/textView4"android:layout_width="wrap_content"android:layout_height="38dp"android:layout_gravity="center"android:layout_marginLeft="2dp"android:gravity="center"android:padding="4dp"android:background="#F8F3E5"android:textSize="18sp"android:textColor="@color/black"android:text="账号" /><View style="@style/vLine" /><EditTextandroid:id="@+id/login_z"android:layout_width="wrap_content"android:layout_height="38dp"android:layout_gravity="center"android:padding="4dp"android:paddingLeft="5dp"android:background="#F8F3E5"android:textSize="18sp"android:textColor="@color/black"android:textColorHint="@color/black"android:ems="10"android:inputType="textPersonName"android:text="" /></LinearLayout><LinearLayoutandroid:id="@+id/ming"android:layout_width="wrap_content"android:layout_height="40dp"android:layout_centerHorizontal="true"android:layout_below="@+id/zhang"android:layout_marginTop="10dp"android:background="#F8F3E5"android:orientation="horizontal"><TextViewandroid:id="@+id/textView5"android:layout_width="wrap_content"android:layout_height="38dp"android:layout_gravity="center"android:layout_marginLeft="2dp"android:gravity="center"android:padding="4dp"android:background="#F8F3E5"android:textSize="18sp"android:textColor="@color/black"android:text="密码" /><View style="@style/vLine" /><EditTextandroid:id="@+id/login_m"android:layout_width="wrap_content"android:layout_height="38dp"android:layout_gravity="center"android:padding="4dp"android:paddingLeft="5dp"android:background="#F8F3E5"android:textSize="18sp"android:textColor="@color/black"android:textColorHint="@color/black"android:ems="10"android:inputType="textPassword" /></LinearLayout><RelativeLayoutandroid:layout_below="@+id/ming"android:layout_marginTop="10dp"android:layout_width="260dp"android:layout_centerHorizontal="true"android:layout_height="wrap_content"><Buttonandroid:id="@+id/bt_register"android:layout_width="58dp"android:layout_height="40dp"android:background="#A1A88D"android:textSize="18dp"android:text="注册" /><Buttonandroid:id="@+id/bt_xpassword"android:layout_width="wrap_content"android:layout_height="40dp"android:layout_toRightOf="@+id/bt_register"android:layout_marginLeft="2dp"android:background="#00000000"android:text="忘记密码 ?" /><Buttonandroid:id="@+id/bt_login"android:layout_width="58dp"android:layout_height="40dp"android:layout_alignParentRight="true"android:background="#A1A88D"android:text="登录"android:textSize="18dp" /></RelativeLayout></RelativeLayout>
</LinearLayout>

login.java 代码: 

package com.example.datastorage;import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;public class login extends AppCompatActivity implements View.OnClickListener {QQHelper qqHelper;private EditText login_z, login_m;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_login);qqHelper = new QQHelper(login.this);
//        login.this.deleteDatabase("qq.db");init();Outdate();}private void init() {login_z = findViewById(R.id.login_z);login_m = findViewById(R.id.login_m);Button bt_register = findViewById(R.id.bt_register);Button bt_xpassword = findViewById(R.id.bt_xpassword);Button bt_login = findViewById(R.id.bt_login);bt_register.setOnClickListener(this);bt_xpassword.setOnClickListener(this);bt_login.setOnClickListener(this);}private void Outdate() {Map<String,String> map = SaveQQ.getUserInfo(login.this);String account = map.get("account");String password = map.get("password");login_z.setText(account);login_m.setText(password);}@SuppressLint("NonConstantResourceId")@Overridepublic void onClick(View view) {switch (view.getId()) {case R.id.bt_register: {Intent intent = new Intent(login.this , register.class);startActivity(intent);finish();break;}case R.id.bt_xpassword: {Intent intent = new Intent(login.this , UpdatePassword.class);startActivity(intent);finish();break;}case R.id.bt_login: {String account = login_z.getText().toString().trim();String password = login_m.getText().toString();Log.i("debug","登录按钮");if(TextUtils.isEmpty(account) || TextUtils.isEmpty(password)) {Toast.makeText(this, "账号和密码不能为空", Toast.LENGTH_SHORT).show();break;}int f = QQperate.query(login.this, account, password);if(f == 1) {Intent intent = new Intent(login.this , zhujianActivity.class);SaveQQ.SaveUserInfo(login.this, account, password);Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();startActivity(intent);finish();} else {Toast.makeText(this, "账号或密码错误", Toast.LENGTH_SHORT).show();}break;}}}
}

二、注册界面

activity_register.xml布局代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><RelativeLayoutandroid:background="@drawable/bgqq"android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:id="@+id/register_back"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="5dp"android:padding="5dp"app:srcCompat="@drawable/back" /><ImageViewandroid:id="@+id/imgqq"android:layout_width="100dp"android:layout_height="100dp"android:layout_centerHorizontal="true"android:layout_marginTop="100dp"app:srcCompat="@drawable/rg" /><TextViewandroid:id="@+id/textView2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_below="@+id/imgqq"android:textColor="#000000"android:textSize="24sp"android:text="用户注册" /><LinearLayoutandroid:id="@+id/zhang"android:layout_width="wrap_content"android:layout_height="40dp"android:layout_centerHorizontal="true"android:layout_below="@+id/textView2"android:layout_marginTop="40dp"android:background="#F8F3E5"android:orientation="horizontal"><TextViewandroid:id="@+id/textView4"android:layout_width="wrap_content"android:layout_height="38dp"android:layout_gravity="center"android:layout_marginLeft="2dp"android:gravity="center"android:padding="4dp"android:background="#F8F3E5"android:textSize="18sp"android:textColor="@color/black"android:text="账        号" /><View style="@style/vLine" /><EditTextandroid:id="@+id/register_z"android:layout_width="wrap_content"android:layout_height="38dp"android:layout_gravity="center"android:padding="4dp"android:paddingLeft="5dp"android:background="#F8F3E5"android:textSize="18sp"android:textColor="@color/black"android:textColorHint="@color/black"android:ems="10"android:inputType="textPersonName"android:text="" /></LinearLayout><LinearLayoutandroid:id="@+id/qq_phone"android:layout_width="wrap_content"android:layout_height="40dp"android:layout_centerHorizontal="true"android:layout_below="@+id/zhang"android:layout_marginTop="10dp"android:background="#F8F3E5"android:orientation="horizontal"><TextViewandroid:id="@+id/textView8"android:layout_width="wrap_content"android:layout_height="38dp"android:layout_gravity="center"android:layout_marginLeft="2dp"android:gravity="center"android:padding="4dp"android:background="#F8F3E5"android:textSize="18sp"android:textColor="@color/black"android:text="电话号码" /><View style="@style/vLine" /><EditTextandroid:id="@+id/register_pnum"android:layout_width="wrap_content"android:layout_height="38dp"android:layout_gravity="center"android:padding="4dp"android:paddingLeft="5dp"android:background="#F8F3E5"android:textSize="18sp"android:textColor="@color/black"android:textColorHint="@color/black"android:ems="10"android:inputType="textPersonName"android:text="" /></LinearLayout><LinearLayoutandroid:id="@+id/ming1"android:layout_width="wrap_content"android:layout_height="40dp"android:layout_centerHorizontal="true"android:layout_below="@+id/qq_phone"android:layout_marginTop="10dp"android:background="#F8F3E5"android:orientation="horizontal"><TextViewandroid:id="@+id/textView5"android:layout_width="wrap_content"android:layout_height="38dp"android:layout_gravity="center"android:layout_marginLeft="2dp"android:gravity="center"android:padding="4dp"android:background="#F8F3E5"android:textSize="18sp"android:textColor="@color/black"android:text="密        码" /><View style="@style/vLine" /><EditTextandroid:id="@+id/register_m"android:layout_width="wrap_content"android:layout_height="38dp"android:layout_gravity="center"android:padding="4dp"android:paddingLeft="5dp"android:background="#F8F3E5"android:textSize="18sp"android:textColor="@color/black"android:textColorHint="@color/black"android:ems="10"android:inputType="textPassword" /></LinearLayout><LinearLayoutandroid:id="@+id/ming2"android:layout_width="wrap_content"android:layout_height="40dp"android:layout_centerHorizontal="true"android:layout_below="@+id/ming1"android:layout_marginTop="10dp"android:background="#F8F3E5"android:orientation="horizontal"><TextViewandroid:id="@+id/textView7"android:layout_width="wrap_content"android:layout_height="38dp"android:layout_gravity="center"android:layout_marginLeft="2dp"android:gravity="center"android:padding="4dp"android:background="#F8F3E5"android:textSize="18sp"android:textColor="@color/black"android:text="确认密码" /><View style="@style/vLine" /><EditTextandroid:id="@+id/register_am"android:layout_width="wrap_content"android:layout_height="38dp"android:layout_gravity="center"android:padding="4dp"android:paddingLeft="5dp"android:background="#F8F3E5"android:textSize="18sp"android:textColor="@color/black"android:textColorHint="@color/black"android:ems="10"android:inputType="textPassword" /></LinearLayout><Buttonandroid:id="@+id/bt_rgcommit"android:layout_width="300dp"android:layout_height="40dp"android:layout_centerHorizontal="true"android:layout_below="@id/ming2"android:layout_marginTop="20dp"android:background="#A1A88D"android:textSize="18sp"android:text="提交" /></RelativeLayout>
</LinearLayout>

register.java 代码:

package com.example.datastorage;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;public class register extends AppCompatActivity {private EditText register_z, register_m, register_am, register_pnum;private ImageView back;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_register);init();}private void init() {register_z = findViewById(R.id.register_z);register_pnum = findViewById(R.id.register_pnum);register_m = findViewById(R.id.register_m);register_am = findViewById(R.id.register_am);Button bt_rgcommit = findViewById(R.id.bt_rgcommit);back = findViewById(R.id.register_back);back.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {result();}});bt_rgcommit.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {String account = register_z.getText().toString();String num = register_pnum.getText().toString().trim();String password = register_m.getText().toString();String apassword = register_am.getText().toString();if(TextUtils.isEmpty(account)) {Toast.makeText(register.this, "账号不能为空", Toast.LENGTH_SHORT).show();return;}if(TextUtils.isEmpty(num)) {Toast.makeText(register.this, "号码不能为空", Toast.LENGTH_SHORT).show();return;}if(TextUtils.isEmpty(password)) {Toast.makeText(register.this, "密码不能为空", Toast.LENGTH_SHORT).show();return;}if(TextUtils.isEmpty(apassword)) {Toast.makeText(register.this, "确认密码不能为空", Toast.LENGTH_SHORT).show();return;}if(!password.equals(apassword)) {Toast.makeText(register.this, "密码和确认密码不相同", Toast.LENGTH_SHORT).show();return;}int f = QQperate.insert(register.this, account, num, password);if (f == 1) {SaveQQ.SaveUserInfo(register.this , account, password);Toast.makeText(register.this, "注册成功", Toast.LENGTH_SHORT).show();} else {Toast.makeText(register.this, "注册失败,账号或者号码已存在", Toast.LENGTH_SHORT).show();}}});}private void result() {Intent intent = new Intent(register.this , login.class);startActivity(intent);finish();}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {result();}return false;}
}

三、修改密码(忘记密码 ?)

activity_update_password.xml布局代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><RelativeLayoutandroid:background="@drawable/bgqq"android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:id="@+id/password_back"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="5dp"android:padding="5dp"app:srcCompat="@drawable/back" /><ImageViewandroid:id="@+id/imgqq"android:layout_width="100dp"android:layout_height="100dp"android:layout_centerHorizontal="true"android:layout_marginTop="100dp"app:srcCompat="@drawable/up_password" /><TextViewandroid:id="@+id/textView2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_below="@+id/imgqq"android:textColor="#2C2C2C"android:textSize="24sp"android:text="修改密码" /><LinearLayoutandroid:id="@+id/qq_phone"android:layout_width="wrap_content"android:layout_height="40dp"android:layout_centerHorizontal="true"android:layout_below="@+id/textView2"android:layout_marginTop="40dp"android:background="#F8F3E5"android:orientation="horizontal"><TextViewandroid:id="@+id/textView8"android:layout_width="wrap_content"android:layout_height="38dp"android:layout_gravity="center"android:layout_marginLeft="2dp"android:gravity="center"android:padding="4dp"android:background="#F8F3E5"android:textSize="18sp"android:textColor="@color/black"android:text="注册号码" /><View style="@style/vLine" /><EditTextandroid:id="@+id/up_pnum"android:layout_width="wrap_content"android:layout_height="38dp"android:layout_gravity="center"android:padding="4dp"android:paddingLeft="5dp"android:background="#F8F3E5"android:textSize="18sp"android:textColor="@color/black"android:textColorHint="@color/black"android:ems="10"android:inputType="textPersonName"android:text="" /></LinearLayout><LinearLayoutandroid:id="@+id/ming1"android:layout_width="wrap_content"android:layout_height="40dp"android:layout_centerHorizontal="true"android:layout_below="@+id/qq_phone"android:layout_marginTop="10dp"android:background="#F8F3E5"android:orientation="horizontal"><TextViewandroid:id="@+id/textView5"android:layout_width="wrap_content"android:layout_height="38dp"android:layout_gravity="center"android:layout_marginLeft="2dp"android:gravity="center"android:padding="4dp"android:background="#F8F3E5"android:textSize="18sp"android:textColor="@color/black"android:text="新  密  码" /><View style="@style/vLine" /><EditTextandroid:id="@+id/up_m"android:layout_width="wrap_content"android:layout_height="38dp"android:layout_gravity="center"android:padding="4dp"android:paddingLeft="5dp"android:background="#F8F3E5"android:textSize="18sp"android:textColor="@color/black"android:textColorHint="@color/black"android:ems="10"android:inputType="textPassword" /></LinearLayout><LinearLayoutandroid:id="@+id/ming2"android:layout_width="wrap_content"android:layout_height="40dp"android:layout_centerHorizontal="true"android:layout_below="@+id/ming1"android:layout_marginTop="10dp"android:background="#F8F3E5"android:orientation="horizontal"><TextViewandroid:id="@+id/textView7"android:layout_width="wrap_content"android:layout_height="38dp"android:layout_gravity="center"android:layout_marginLeft="2dp"android:gravity="center"android:padding="4dp"android:background="#F8F3E5"android:textSize="18sp"android:textColor="@color/black"android:text="确认密码" /><View style="@style/vLine" /><EditTextandroid:id="@+id/up_am"android:layout_width="wrap_content"android:layout_height="38dp"android:layout_gravity="center"android:padding="4dp"android:paddingLeft="5dp"android:background="#F8F3E5"android:textSize="18sp"android:textColor="@color/black"android:textColorHint="@color/black"android:ems="10"android:inputType="textPassword" /></LinearLayout><Buttonandroid:id="@+id/bt_upcommit"android:layout_width="300dp"android:layout_height="40dp"android:layout_centerHorizontal="true"android:layout_below="@id/ming2"android:layout_marginTop="20dp"android:background="#A1A88D"android:textSize="18sp"android:text="提交" /></RelativeLayout>
</LinearLayout>

UpdatePassword.java 代码:

package com.example.datastorage;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;import java.util.Map;public class UpdatePassword extends AppCompatActivity {private EditText up_pnum, up_m, up_am;private ImageView back;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_update_password);init();}private void init() {up_pnum = findViewById(R.id.up_pnum);up_m = findViewById(R.id.up_m);up_am = findViewById(R.id.up_am);Button bt_upcommit = findViewById(R.id.bt_upcommit);back = findViewById(R.id.password_back);back.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {result();}});bt_upcommit.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {String num = up_pnum.getText().toString().trim();String password = up_m.getText().toString();String apassword = up_am.getText().toString();if (TextUtils.isEmpty(num)) {Toast.makeText(UpdatePassword.this, "号码不能为空", Toast.LENGTH_SHORT).show();return;}if (TextUtils.isEmpty(password)) {Toast.makeText(UpdatePassword.this, "新密码不能为空", Toast.LENGTH_SHORT).show();return;}if (TextUtils.isEmpty(apassword)) {Toast.makeText(UpdatePassword.this, "确认密码不能为空", Toast.LENGTH_SHORT).show();return;}if (!password.equals(apassword)) {Toast.makeText(UpdatePassword.this, "确认密码不能为空", Toast.LENGTH_SHORT).show();return;}int f = QQperate.update(UpdatePassword.this , num, password);if(f == 1) {Map<String,String> map = QQperate.queryUp(UpdatePassword.this , num);SaveQQ.SaveUserInfo(UpdatePassword.this , map.get("account"), map.get("password"));Toast.makeText(UpdatePassword.this, "修改成功", Toast.LENGTH_SHORT).show();} else {Toast.makeText(UpdatePassword.this, "修改失败", Toast.LENGTH_SHORT).show();}}});}private void result() {Intent intent = new Intent(UpdatePassword.this , login.class);startActivity(intent);finish();}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {result();}return false;}
}

四、SQLite 与 SharedPreferences 操作

SQlite数据库存储主要用来保存用户信息,SharedPreferences存储主要用来实现记录账号与密码的功能,方便下次登录。

QQHelper.java 创建SQLite数据库:

package com.example.datastorage;import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;import androidx.annotation.Nullable;public class QQHelper extends SQLiteOpenHelper {public QQHelper(@Nullable Context context) {super(context, "qq.db", null, 1);}@Overridepublic void onCreate(SQLiteDatabase sqLiteDatabase) {String sql = "create table user(_id Integer primary key AUTOINCREMENT,  account varchar(20) , num varchar(20), password varchar(20))";sqLiteDatabase.execSQL(sql);}@Overridepublic void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {}
}

QQperate.java 对SQLite数据库进行增、改、查操作:

package com.example.datastorage;import android.annotation.SuppressLint;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;import java.util.HashMap;
import java.util.Map;public class QQperate {//添加用户public static int insert(Context context, String account, String num, String password) {QQHelper qqHelper = new QQHelper(context);SQLiteDatabase db = qqHelper.getWritableDatabase();ContentValues values = new ContentValues();values.put("account",account);values.put("num",num);values.put("password",password);String sql = "select * from user where account=? or num=?";Cursor cursor = db.rawQuery(sql, new String[]{account, num});int f = 0;if(cursor.getCount() == 0) {db.insert("user",null,values);f = 1;}db.close();cursor.close();return f;}//修改密码public static int update(Context context, String num, String password) {QQHelper qqHelper = new QQHelper(context);SQLiteDatabase db = qqHelper.getWritableDatabase();String sql = "update user set password=? where num=?";Cursor cursor = db.query("user",null,"num=?",new String[]{num},null,null,null);int f = 0;if(cursor.getCount() != 0) {db.execSQL(sql,new String[]{password, num});f = 1;}db.close();cursor.close();return f;}//查询用户public static int query(Context context, String account, String password) {QQHelper qqHelper = new QQHelper(context);SQLiteDatabase db = qqHelper.getWritableDatabase();String sql = "select * from user where account=? and password=?";Cursor cursor = db.rawQuery(sql,new String[]{account,password});int f = 0;if(cursor.getCount() != 0) f = 1;db.close();cursor.close();return f;}//通过注册号码查询账号与密码public static Map<String,String> queryUp(Context context, String num) {QQHelper qqHelper = new QQHelper(context);SQLiteDatabase db = qqHelper.getWritableDatabase();String sql = "select * from user where num=?";Cursor cursor = db.rawQuery(sql,new String[]{num});Map<String,String> map = new HashMap<>();if(cursor.moveToNext()) {@SuppressLint("Range") String account = cursor.getString(cursor.getColumnIndex("account"));@SuppressLint("Range") String password = cursor.getString(cursor.getColumnIndex("password"));map.put("account",account);map.put("password",password);}cursor.close();db.close();return map;}
}

SaveQQ.java保存QQ账号与密码:

package com.example.datastorage;import android.content.Context;
import android.content.SharedPreferences;import java.util.HashMap;
import java.util.Map;public class SaveQQ {public static void SaveUserInfo(Context context, String account, String password) {SharedPreferences sharedPreferences = context.getSharedPreferences("QQuser",Context.MODE_PRIVATE);SharedPreferences.Editor editor = sharedPreferences.edit();editor.putString("account",account);editor.putString("password",password);editor.apply();}public static Map<String,String> getUserInfo(Context context) {SharedPreferences sharedPreferences = context.getSharedPreferences("QQuser",Context.MODE_PRIVATE);String account = sharedPreferences.getString("account",null);String password = sharedPreferences.getString("password",null);Map<String,String> map = new HashMap<>();map.put("account",account);map.put("password",password);return map;}
}

五、登录成功界面

activity_zhujian.xml 代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/bgqq"><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:orientation="vertical"><ImageViewandroid:id="@+id/imageView2"android:layout_width="150dp"android:layout_height="150dp"android:layout_centerHorizontal="true"android:layout_centerVertical="true"app:srcCompat="@drawable/succeeded" /><TextViewandroid:id="@+id/textView6"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:textColor="#2C2C2C"android:textSize="28sp"android:text="登录成功" /></LinearLayout></RelativeLayout>

zhujianActivity.java 代码:

package com.example.datastorage;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;public class zhujianActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_zhujian);}
}

六、 styles.xml 和AndroidManifest.xml

在创建Activity之后,需要对创建的Activity进行配置,在AndroidManifest.xml中可以看到Activity的配置,其中exported根据需要设置,启动模式可以选择默认,stles.xml里面设置的是竖线。(AndroidManifest.xml 中有不是登录注册的Activity配置,不要混淆)

styles.xml 代码:

<?xml version="1.0" encoding="utf-8"?>
<resources><style name="vLine"><item name="android:layout_width">2dp</item><item name="android:layout_height">18dp</item><item name="android:layout_gravity">center</item><item name="android:background">#7D978B</item></style>
</resources>

AndroidManifest.xml 代码:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"><applicationandroid:allowBackup="true"android:dataExtractionRules="@xml/data_extraction_rules"android:fullBackupContent="@xml/backup_rules"android:icon="@drawable/cc"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/Theme.DataStorage"tools:targetApi="31"><activityandroid:name=".zhujianActivity"android:exported="true" /><activityandroid:launchMode="singleTask"android:name=".UpdatePassword"android:exported="true" /><activityandroid:launchMode="singleTask"android:name=".register"android:exported="true" /><activityandroid:launchMode="singleTask"android:name=".login"android:exported="true" /><activityandroid:name=".SQLiteSave"android:exported="true"android:launchMode="singleTask" /><activityandroid:name=".FileSave"android:exported="true"android:launchMode="singleTask" /><activityandroid:name=".SPSave"android:exported="true"android:launchMode="singleTask" /><activityandroid:name=".MainActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

Android开发 登录注册设计相关推荐

  1. Android之登录界面设计

    Android之登录界面设计 这篇文章主要讲述Android开发中常用的APP开发界面–登录界面的开发(由于博主是初学安卓,可能有些小伙伴会感到简陋,我会继续努力学习新知识的,大家一起加油). (1) ...

  2. Android程序登录界面设计

    刚刚学习Android开发,现在工作需要开发一个app的演示程序,首先就是要开发一个登录界面了.在网上找了很多材料,最后参考了博客中的登录界面设计方法: blog.csdn.net/StayFooli ...

  3. Android用户登录注册界面

    用户登录注册界面开发及用户信息管理案例详解 刚开始接触Android编程,这算是我写的第一个简单工程,主要功能有:用户登录.注册.注销.修改密码.记住密码共5个基本操作,其内容涉及到以下几点: 1:B ...

  4. 【项目分享~写给应届生的一篇文章】基于Web企业招聘网站 ~~ 登录注册设计

    背景 适合人群: 应届生 推荐:可直接做为毕业设计项目,开发架构简单,按照统一的规范开发,容易上少 原因:这个项目涉及到SSM三大框架,所以刚刚入门JavaWeb的同学可能不大适合,缺少太多必备的知识 ...

  5. 【项目分享~写给应届生的一篇文章】基于Web企业招聘网站 ~~ 登录注册设计2

    背景 适合人群: 应届生 推荐:可直接做为毕业设计项目,开发架构简单,按照统一的规范开发,容易上少 原因:这个项目涉及到SSM三大框架,所以刚刚入门JavaWeb的同学可能不大适合,缺少太多必备的知识 ...

  6. Android之登录注册——简易版

    今天,我要分享给大家的是Android中常见的一个的登录注册的案例,我这里写的是简易版,如果大家有更精彩的拓展,可以自行发挥哦! 运行过程相信大家都已经心知肚明了,所以我在这里就直接发布代码了,其中有 ...

  7. Android学习别“走弯路”,android开发计算器课程设计

    3.几种基本类型,长度,边界 4.从 Iterator 到 Collection,再到 Set List Map(必问) 5.从以下几个角度理解学习:用法,具体实现类,线程安全性,底层数据存储结构,某 ...

  8. Android 实现 登录注册注销功能

    Android用SharedPreferences实现登录注册注销功能 前言 本文用SharedPreferences本地缓存账号信息来实现登录注册功能,以及退出注销功能. 一.本文逻辑 本文的注册登 ...

  9. Android - 原生登录注册页面【仿】淘宝App

    bean文件夹:解析数据 LoginBean.java private String msg;private String code;private DataBean data;public Stri ...

最新文章

  1. ELK日志分析平台搭建全过程
  2. 好物推荐 | 轻薄神器,妈妈再也不用担心我的颈椎了
  3. Cloud for Customer里XML view的加载原理
  4. C++STL-priority_queue
  5. 报告 | 73%的“落伍”开发者说:明年要学AI技术
  6. Core Animation演示
  7. 即时配送,对接闪送预下单接口,报“签名校验失败”
  8. python中的计数函数_NumPy的搜索和计数函数
  9. 【Python】过滤表情字符
  10. 重新认识企业数智化!
  11. linux用c进程并行,Linux下的C / C ++使用多线程
  12. 头腾大战再升级 字节跳动做游戏的胜算有多少?
  13. TI-RTOS学习笔记(三)—— 驱动程序框架
  14. Win10 蓝屏 SFC /SCANNOW发现损坏文件
  15. 图书管理系统---用户模块
  16. 晶体三极管工作原理讲解方法探讨
  17. 机器学习案例——客户流失预测
  18. 打开 WORD 报错“无法创建工作文件, 请检查临时环境变量”
  19. 3-6CSS揭秘阅读笔记第一章:引言
  20. 黑苹果2k显示器开启hidpi_黑苹果MAC系统1080P显示模糊问题处理

热门文章

  1. 小区物业app开发功能详解!
  2. python机器学习评估指标,阿里专家原创
  3. 心中有“树”!图文并茂介绍数据结构中常见的树(二)
  4. 7月2号周六下午,北京,欢迎大家来面基呀
  5. [还魂篇] 初来乍到如何致人于死地
  6. 制造企业制造执行系统的优势是什么?
  7. 浅析“04.23王者荣耀KPL比赛因出现硬件异常导致比赛延期”这一事件
  8. <CSS练习> 奔跑的小熊 CSS3动画 含素材
  9. 计算机如何解决卡顿问题,电脑越来越卡如何解决 六种应对方法轻松解决问题...
  10. 深度学习笔记(十二)---One-hot编码