当前位置: 首页 > article >正文

android 登录界面编写

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">

    <TextView
        android: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" />

    <LinearLayout
        android: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">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center">

            <TextView
                style="@style/TextView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="@dimen/layout_left_distance"
                android:text="用户名:" />

            <EditText
                android:id="@+id/editUser"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginRight="@dimen/layout_right_diatance"
                android:ems="10" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center">

            <TextView
                style="@style/TextView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="@dimen/layout_left_distance"
                android:text="密   码:" />

            <EditText
                android: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>

    <LinearLayout
        android:id="@+id/layoutCheck"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toBottomOf="@id/layoutInput"
        android:gravity="center">

        <CheckBox
            android:id="@+id/checkBoxRemember"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="80dp"
            android:text="记住密码" />
    </LinearLayout>

    <Button
        android: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() {
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Nullable
    @Override
    public 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() {
        @Override
        public void handleMessage(Message msg) {
            if (msg.what == 123) {
                progressDialog.dismiss();
                Toast.makeText(getActivity(),"登录成功", Toast.LENGTH_LONG).show();
            }
        }
    };
}
4、实现成果


http://www.kler.cn/a/452802.html

相关文章:

  • WSL2上Ubuntu22.04安装Docker
  • 如何使用MySQL WorkBench操作MySQL数据库
  • 每天40分玩转Django:Django静态文件
  • 【双人面经】python后端开发工程师--python基础,框架,数据库,消息队列等
  • C++ Eigen常见的高级用法 [学习笔记]
  • QT的前景与互联网岗位发展
  • 在UE5中调用ImGui图形界面库
  • Mysql的MHA高可用及故障切换
  • 3.银河麒麟V10 离线安装Nginx
  • VisionPro开发使用交互反馈系统(Affordance System)
  • 自定义 SpringBoot Starter
  • 联通软研院:基于OceanBase落地检索增强生成 (RAG) 的应用实践
  • 基于Spring Boot的工商局商家管理系统
  • 不在广东想把自己的IP变成广东怎么办
  • 配置搜索无人机
  • 游戏引擎学习第56天
  • 软件需求建模方法
  • CSS @property 属性
  • 分布式调度框架学习笔记
  • 大模型推理引擎国产化思考和实践
  • 学习solid works第七课------装配体
  • ip归属地是什么意思?ip归属地是实时定位吗
  • Oracle数据库高效优化与实战案例解析
  • 走进 Web3:探索分布式网络的未来
  • Android 开发中自定义吐司(二)
  • Redis基础(1)--基本全局指令与架构