1、登录页面实现内容
1.实现使用两个EditText输入框输入用户名和密码。
2.使用CheckBox控件记住密码功能。
3.登录时候,验证用户名和密码是否为空。
4.当前CheckBox控件记住密码勾上时,使用SharedPreferences存储用户名和密码。
5.登录时候使用ProgressDialog登录转圈圈2秒,两秒后显示登录成功。
6.默认用户名和密码admin和admin。当用户名和密码输入都是admin就提示登录成功。
2、登录页面布局实现
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/main"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/tvTitle"style="@style/TextView"android:layout_width="match_parent"android:layout_height="80dp"android:layout_marginTop="20dp"android:gravity="center"android:text="登录"android:textSize="24sp"android:textStyle="bold"app:layout_constraintTop_toTopOf="parent" /><LinearLayoutandroid:id="@+id/layoutInput"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_margin="30dp"android:gravity="center"android:orientation="vertical"app:layout_constraintTop_toBottomOf="@id/tvTitle"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"><TextViewstyle="@style/TextView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="@dimen/layout_left_distance"android:text="用户名:" /><EditTextandroid:id="@+id/editUser"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginRight="@dimen/layout_right_diatance"android:ems="10" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"><TextViewstyle="@style/TextView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="@dimen/layout_left_distance"android:text="密 码:" /><EditTextandroid:id="@+id/editPsw"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginRight="@dimen/layout_right_diatance"android:ems="10"android:inputType="textPassword" /></LinearLayout></LinearLayout><LinearLayoutandroid:id="@+id/layoutCheck"android:layout_width="match_parent"android:layout_height="wrap_content"app:layout_constraintTop_toBottomOf="@id/layoutInput"android:gravity="center"><CheckBoxandroid:id="@+id/checkBoxRemember"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="80dp"android:text="记住密码" /></LinearLayout><Buttonandroid:id="@+id/buttonLogin"style="@style/button"android:layout_width="match_parent"android:layout_height="50dp"android:layout_marginLeft="50dp"android:layout_marginTop="20dp"android:layout_marginRight="50dp"android:text="登录"app:layout_constraintTop_toBottomOf="@id/layoutCheck"tools:ignore="MissingConstraints" />
</androidx.constraintlayout.widget.ConstraintLayout>
3、fragment实现登录界面
public class LoginFragment extends Fragment {private ProgressDialog progressDialog = null;private View rootView;private EditText editUser, editPsw;private CheckBox checkBoxRemember;public LoginFragment() {}@Overridepublic void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);}@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {rootView = inflater.inflate(R.layout.fragment_loglin, container, false);editUser = rootView.findViewById(R.id.editUser);editPsw = rootView.findViewById(R.id.editPsw);checkBoxRemember = rootView.findViewById(R.id.checkBoxRemember);SharedPreferences sp = getActivity().getSharedPreferences("mmsx", MODE_PRIVATE);editUser.setText(sp.getString("user",""));editPsw.setText(sp.getString("password",""));checkBoxRemember.setChecked(sp.getBoolean("remember",true));View buttonLogin = rootView.findViewById(R.id.buttonLogin);buttonLogin.setOnClickListener(view -> {String user = editUser.getText().toString();String psw = editPsw.getText().toString();if (user.isEmpty()){Toast.makeText(getActivity(),"请输入用户名", Toast.LENGTH_LONG).show();return;}if (psw.isEmpty()){Toast.makeText(getActivity(),"请输入密码", Toast.LENGTH_LONG).show();return;}if (user.equalsIgnoreCase("admin") && psw.equalsIgnoreCase("admin")){SharedPreferences.Editor edit = Objects.requireNonNull(getActivity()).getSharedPreferences("mmsx", MODE_PRIVATE).edit();if (checkBoxRemember.isChecked()){edit.putString("user", "admin");edit.putString("password", "admin");}else {edit.putString("user", "");edit.putString("password", "");}edit.putBoolean("remember", checkBoxRemember.isChecked());edit.apply();progressDialog=new ProgressDialog(getActivity());progressDialog.setTitle("登录中");progressDialog.setMessage("登录中,请稍后...");progressDialog.setCancelable(true);progressDialog.show();//这里的话新建一个线程,重写run()方法,new Thread(){public void run(){SystemClock.sleep(2000);//把信息码发送给handle让更新界面handler.sendEmptyMessage(123);}}.start();}else {Toast.makeText(getActivity(),"用户名或者密码错误", Toast.LENGTH_LONG).show();}});return rootView;}@SuppressLint("HandlerLeak")Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {if (msg.what == 123) {progressDialog.dismiss();Toast.makeText(getActivity(),"登录成功", Toast.LENGTH_LONG).show();}}};
}