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"><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();}}};
}
4、实现成果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/492964.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

run postinstall error, please remove node_modules before retry!

下载 node_modules 报错&#xff1a;run postinstall error, please remove node_modules before retry! 原因&#xff1a;node 版本出现错误&#xff0c;我的项目之前是在 12 下运行的。解决方法&#xff1a; 先卸载node_modules清除缓存将node版本切换到12重新下载即可

Docker 安装 禅道-21.2版本-外部数据库模式

Docker 安装系列 1、拉取最新版本&#xff08;zentao 21.2&#xff09; [rootTseng ~]# docker pull hub.zentao.net/app/zentao Using default tag: latest latest: Pulling from app/zentao 55ab1b300d4b: Pull complete 6b5749e5ef1d: Pull complete bdccb03403c1: Pul…

visual studio 2022 c++使用教程

介绍 c开发windows一般都是visual studio&#xff0c;linux一般是vscode&#xff0c;但vscode调试c不方便&#xff0c;所以很多情况都是2套代码&#xff0c;在windows上用vs开发方便&#xff0c;在转到linux。 安装 1、官网下载vs2022企业版–选择桌面开发–安装位置–安装–…

python学opencv|读取图像(十七)认识alpha通道

【1】引言 前序学习进程中&#xff0c;我们已经掌握了RGB和HSV图像的通道拆分和合并&#xff0c;获得了很多意想不到的效果&#xff0c;相关链接包括且不限于&#xff1a; python学opencv|读取图像&#xff08;十二&#xff09;BGR图像转HSV图像-CSDN博客 python学opencv|读…

设计模式--单例模式【创建型模式】

设计模式的分类 我们都知道有 23 种设计模式&#xff0c;这 23 种设计模式可分为如下三类&#xff1a; 创建型模式&#xff08;5 种&#xff09;&#xff1a;单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式。结构型模式&#xff08;7 种&#xff09;&#xff1…

neo4j 图表数据导入到 TuGraph

neo4j 图表数据导入到 TuGraph 代码文件说明后文 前言:近期在引入阿里的 TuGraph 图数据库&#xff0c;需要将 原 neo4j 数据导入到新的 tugraph 数据库中。预期走csv文件导入导出&#xff0c;但因为格式和数据库设计问题&#xff0c;操作起来比较麻烦&#xff08;可能是个人没…

模具生产过程中的标签使用流程图

①NFC芯片嵌入周转筐&#xff0c;通过读卡器读取CK_Label_v3的数据&#xff0c;并将这些信息上传至服务器进行存储&#xff1b; ②服务器随后与客户的WMS&#xff08;仓库管理系统&#xff09;进行交互&#xff0c;记录和同步注塑机的原始数据&#xff1b; ③当周转筐内的模具…

Linux线程同步

1 线程同步概念 假设有有三个线程A,B,C&#xff0c;当前一个线程A对内存中的共享资源进行访问时&#xff0c;其它线程B&#xff0c;C都不可以对这块内存进行操作&#xff0c;直到线程A对这块内存访问完毕为止&#xff0c;B&#xff0c;C中的一个才能访问这块内存&#xff0c;剩…

Vue与React:前端框架的巅峰对决

文章目录 一、引言&#xff08;一&#xff09;前端框架发展现状简述 二、Vue 与 React 框架概述&#xff08;一&#xff09;Vue.js 简介&#xff08;二&#xff09;React.js 简介 三、开发效率对比&#xff08;一&#xff09;Vue 开发效率分析&#xff08;二&#xff09;React …

项目管理工具Maven(一)

Maven的概念 什么是Maven 翻译为“专家”&#xff0c;“内行”Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建&#xff0c;依赖管理和项目信息管理。什么是理想的项目构建&#xff1f; 高度自动化&#xff0c;跨平台&#xff0c;可重用的组件&#xff0c;标准…

【Prometheus 】【实战篇(五)】深入解析 Prometheus 监控指标类型:Counter、Gauge、Histogram 和 Summary

Prometheus 提供了四种核心的指标类型&#xff0c;分别是 Counter&#xff08;计数器&#xff09;、Gauge&#xff08;仪表&#xff09;、Histogram&#xff08;直方图&#xff09;和 Summary&#xff08;摘要&#xff09;。这些指标类型在客户端库中有具体的使用说明&#xff…

outlook smtp 发送邮件

前提条件 开通 app password 开通 smtp 服务 import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMETextdef send_html_email_smtp(sender_email, sender_password, recipient_email, subject, html_content):# Create the messag…

如何利用Python爬虫获得Lazada商品评论列表

在电商领域&#xff0c;用户评论是了解商品口碑和市场反馈的重要渠道。对于Lazada这样的东南亚电商平台&#xff0c;获取商品评论列表对于市场分析、产品改进和销售策略的制定至关重要。本文将详细介绍如何使用Python编写爬虫程序&#xff0c;以获取Lazada商品的评论列表。 一、…

穷举vs暴搜vs深搜vs回溯vs剪枝系列一>找出所有子集的异或总和再求和

题目&#xff1a; 解析&#xff1a; 代码&#xff1a; private int ret;//返回周结果private int path;//枚举一个元素就异或进去public int subsetXORSum(int[] nums) {dfs(nums, 0);return ret;} private void dfs(int[] nums, int pos){ret path;for(int i pos; i <…

如何设计一个秒杀系统

开局一张图 结局要说清 对于设计一个秒杀系统&#xff0c;结合图片分层结构&#xff0c;根据每一层从访问层&#xff0c;负载层&#xff0c;服务层&#xff0c;业务层&#xff0c;支撑层&#xff0c;数据层&#xff0c;详细说明每一层应该怎么设计。 应该注意那些事项。比如访…

【LeetCode】45.跳跃游戏II

题目链接&#xff1a; 45.跳跃游戏 题目描述&#xff1a; 思路一&#xff08;广度优先搜索算法BFS&#xff09; 通过广度优先搜索算法寻找最短距离 代码实现&#xff1a; class Solution { public:int jump(vector<int>& nums) {int n nums.size();if(n<1) re…

WPF ControlTemplate 控件模板

区别于 DataTemplate 数据模板&#xff0c;ControlTemplate 是控件模板&#xff0c;是为自定义控件的 Template 属性服务的&#xff0c;Template 属性类型就是 ControlTemplate。 演示&#xff0c; 自定义一个控件 MyControl&#xff0c;包含一个字符串类型的依赖属性。 pub…

clickhouse-题库

1、clickhouse介绍以及架构 clickhouse一个分布式列式存储数据库&#xff0c;主要用于在线分析查询 2、列式存储和行式存储有什么区别&#xff1f; 行式存储&#xff1a; 1&#xff09;、数据是按行存储的 2&#xff09;、没有建立索引的查询消耗很大的IO 3&#xff09;、建…

arcgisPro将面要素转成CAD多段线

1、说明&#xff1a;正常使用【导出为CAD】工具&#xff0c;则导出的是CAD三维多线段&#xff0c;无法进行编辑操作、读取面积等。这是因为要素面中包含Z值&#xff0c;导出则为三维多线段数据。需要利用【复制要素】工具禁用M值和Z值&#xff0c;再导出为CAD&#xff0c;则得到…

【Unity3D】实现可视化链式结构数据(节点数据)

关键词&#xff1a;UnityEditor、可视化节点编辑、Unity编辑器自定义窗口工具 使用Newtonsoft.Json、UnityEditor相关接口实现 主要代码&#xff1a; Handles.DrawBezier(起点&#xff0c;终点&#xff0c;起点切线向量&#xff0c;终点切线向量&#xff0c;颜色&#xff0c;n…