前提
AndroidStudio版本:3.5.2
JDK版本:1.8.0
SDK版本:Android 4.4(KitKat)
AVD类型:Pixel2 API 19
实现步骤
第一步
首先,我们先创建一个项目,这里我以QQ登录为例,我的项目名为SaveQQ。
项目生成之后会有两个自动生成的文件 activity_main.xml 和 MainActivity.java;
activity_main.xml是用来编辑页面的;
MainActivity.java是用来加载页面的。
第二步
然后我们需要准备一张背景图和一张头像图
head.jpg
background.jpg
第三步
准备工作做好之后我们就可以编写页面样式了,我们可以在 activity_main.xml 文件中自定义页面样式,下面是我的 activity_main.xml 代码:
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp"
android:background="@drawable/background">
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="欢迎使用QQ"
android:layout_margin="20dp"
android:textColor="#000000"
android:textSize="25sp"
android:gravity="center"/>
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/image"
android:layout_marginTop="100dp"
android:background="@drawable/head"
android:layout_centerHorizontal="true"/>
android:id="@+id/et_name"
android:layout_width="300sp"
android:layout_height="50sp"
android:hint="QQ号码/手机/邮箱"
android:maxLines="1"
android:textColor="#000000"
android:textSize="20sp"
android:textStyle="bold"
android:layout_below="@id/image"
android:layout_marginTop="50dp"
android:layout_centerHorizontal="true"/>
android:id="@+id/et_pwd"
android:layout_width="300sp"
android:layout_height="50sp"
android:hint="密码"
android:maxLines="1"
android:textColor="#000000"
android:textSize="20sp"
android:textStyle="bold"
android:layout_below="@id/et_name"
android:layout_marginTop="10dp"
android:layout_centerHorizontal="true"/>
android:id="@+id/btn_login"
android:layout_width="200dp"
android:layout_height="50dp"
android:text="登录"
android:textSize="20sp"
android:layout_below="@id/et_pwd"
android:layout_marginTop="30dp"
android:layout_centerHorizontal="true"/>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="忘记密码 | 注册账号"
android:layout_alignParentBottom="true"
android:layout_marginBottom="60dp"
android:layout_centerHorizontal="true"/>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="最终解释权归作者所有"
android:textSize="10dp"
android:layout_alignParentBottom="true"
android:layout_marginBottom="15dp"
android:layout_centerHorizontal="true"/>
效果如图:
第四步
接下来我们要编写一个工具类 SPSaveQQ.java ,用来进行数据的保存和提取操作。
在这里作者使用的是SharedPreferences 的存储方式,好处是使用简单,容易理解。
下面是我的 SPSaveQQ.java 类的代码:
package com.example.saveqq;
import android.content.Context;
import android.content.SharedPreferences;
import java.util.HashMap;
import java.util.Map;
public class SPSaveQQ {
// 保存QQ账号和登录密码到data.xml文件中
public static boolean saveUserInfo(Context context, String name, String password) {
SharedPreferences sp = context.getSharedPreferences("data", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sp.edit();
edit.putString("userName",name);
edit.putString("pwd",password);
edit.commit();
return true;
}
//从data.xml文件中获取存储的QQ帐号和密码
public static Map getUserInfo(Context context) {
SharedPreferences sp = context.getSharedPreferences("data", Context.MODE_PRIVATE);
String name = sp.getString("userName",null);
String password = sp.getString("pwd", null);
Map userMap = new HashMap();
userMap.put("name", name);
userMap.put("password",password);
return userMap;
}
}
第五步
最后我们要编写界面交互代码,也就是 MainActivity.java 文件,代码如下:
package com.example.saveqq;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.util.Map;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private EditText etName;
private EditText etPassword;
private Button btnLogin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始界面
initView();
Map userInfo = SPSaveQQ.getUserInfo(this);
if (userInfo != null){
etName.setText(userInfo.get("name"));
etPassword.setText(userInfo.get("password"));
}
}
private void initView() {
etName = (EditText) findViewById(R.id.et_name);
etPassword = (EditText) findViewById(R.id.et_pwd);
btnLogin = (Button) findViewById(R.id.btn_login);
btnLogin.setOnClickListener(this);
}
@Override
public void onClick(View v) {
//当点击登录按钮时,获取QQ账号和密码
String name = etName.getText().toString().trim();
String password = etPassword.getText().toString();
// 检验账号和密码是否为空
if(TextUtils.isEmpty(name)){
Toast.makeText(this, "请输入QQ账号", Toast.LENGTH_SHORT).show();
return;
}
if(TextUtils.isEmpty(password)){
Toast.makeText(this, "请输入密码", Toast.LENGTH_SHORT).show();
return;
}
// 登录成功
Toast.makeText(this, "登陆成功", Toast.LENGTH_SHORT).show();
//保存用户信息
boolean saveSuccess = SPSaveQQ.saveUserInfo(this, name, password);
if (!saveSuccess){
Toast.makeText(this, "保存失败", Toast.LENGTH_SHORT).show();
}
}
}
第六步
执行就完事了。
在进行登陆的时候我们会发现QQ界面的用户名和密码自动填写了你上一次提交的密码。