登录界面的记住密码和密码的隐藏、显示
登录界面的记住密码功能
先上布局代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <include layout="@layout/login_title"/> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="40dp"> </LinearLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="100dp" android:background="@drawable/shape_1"> <!--该开源项目是用来轻松实现图片圆形化的共能--> <de.hdodenhof.circleimageview.CircleImageView android:id="@+id/icon_image" android:layout_width="100dp" android:layout_height="100dp" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:layout_marginLeft="57dp" android:layout_marginStart="57dp" android:src="@drawable/img_x" /> <ImageView android:id="@+id/edit_view" android:layout_width="25dp" android:layout_height="25dp" android:layout_alignParentTop="true" android:layout_toLeftOf="@+id/take_picture" android:layout_toStartOf="@+id/take_picture" android:src="@drawable/ic_stay_primary_portrait_black_24dp" /> <Button android:id="@+id/take_picture" android:layout_width="wrap_content" android:layout_height="40dp" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginEnd="17dp" android:layout_marginRight="17dp" android:text="点击拍照切换头像" android:textSize="10sp" /> <ImageView android:id="@+id/take_form_album" android:layout_width="25dp" android:layout_height="25dp" android:layout_below="@+id/take_picture" android:layout_marginTop="12dp" android:layout_toLeftOf="@+id/take_picture" android:layout_toStartOf="@+id/take_picture" android:src="@drawable/ic_picture"/> <Button android:id="@+id/take_album" android:layout_width="wrap_content" android:layout_height="40dp" android:layout_toRightOf="@+id/take_form_album" android:layout_below="@+id/take_picture" android:text="相册选择头像" android:textSize="10sp" /> </RelativeLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="40dp" android:background="#fff"> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="60dp"> <TextView android:layout_width="90dp" android:layout_height="wrap_content" android:textSize="18sp" android:layout_gravity="center_vertical" android:text="Username:"/> <EditText android:id="@+id/username" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:layout_gravity="center_vertical"/> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="60dp"> <TextView android:layout_width="90dp" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:text="Email:" android:textSize="18sp" /> <EditText android:id="@+id/mail" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:layout_gravity="center_vertical"/> <ImageView android:id="@+id/mail_Visibility" android:layout_width="40dp" android:layout_height="40dp" android:src="@drawable/ic_visibility" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <CheckBox android:id="@+id/remember_password" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="18sp" android:textStyle="bold" android:text="Remember password"/> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="30dp"> </LinearLayout> <Button android:id="@+id/login" android:layout_width="match_parent" android:layout_height="60dp" android:background="@drawable/shape" android:text="Login" android:textAllCaps="false" android:textColor="#0f0e0e" android:textSize="18sp" android:textStyle="bold" /> </LinearLayout>
效果就如下:
至于逻辑,及先在onCreate()方法中获取sharedPreferences对象,
//通过SharedPreferences储存实现记住密码功能 private SharedPreferences pref;
//获取了SharePreferences对象 pref = PreferenceManager.getDefaultSharedPreferences(this);
然后调用它的getBoolean()方法去获取remember_password这个键值,
//调用SharePreferences的getBoolean()方法获取remember_password这个键值,一开始默认的为false boolean isRemember = pref.getBoolean("remember_password",false);
if (isRemember){//将账号和密码都设置文本框中 String username = pref.getString("username",""); String email = pref.getString("mail",""); usernameEdit.setText(username); emailEdit.setText(email); //将CheckBox状态设置为勾选 rememberPass.setChecked(true); }
接着在登陆成功之后,会调用CheckBox的isChecked()方法来检查复选框是否被选中,
case R.id.login:String username = usernameEdit.getText().toString(); String email = emailEdit.getText().toString(); editor = pref.edit();
//检查复选框是否被选中 if (rememberPass.isChecked()){
如果被选中的话,只是将remember_password设置为true,然后吧username和email对应的只都存入到sharedPreferences文件中并提交,
editor.putBoolean("remember_password",true); editor.putString("username",username); editor.putString("mail",email);
如果没有被选中,就简单的调用一下clear()方法,将sharedPreferences文件中的数据清除掉就可以了
editor.apply(); Intent intent = new Intent(); intent.putExtra("username_return",username); intent.putExtra("email_return",email); setResult(RESULT_OK,intent);
}
整体的逻辑代码:
public class LoginActivity extends AppCompatActivity implements View.OnClickListener{ private CircleImageView circleImageView; //创建Uri对象 private Uri imageUri; //调用摄像头选择头像 private Button take_picture; //调用相册进行选择头像 private Button take_album; private static int FLAG = 1; private EditText usernameEdit; private EditText emailEdit; private Button titleButton; private Button homeButton; private Button loginButton; private TextView usernameText; private TextView emailText; private ImageView show_password; private CheckBox rememberPass; //通过SharedPreferences储存实现记住密码功能 private SharedPreferences pref; private SharedPreferences.Editor editor; @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); //调用摄像头选择头像 take_picture = (Button) findViewById(R.id.take_picture); //调用相册进行选择头像 take_album = (Button) findViewById(R.id.take_album); usernameText = (TextView) findViewById(R.id.username); emailText = (TextView) findViewById(R.id.mail); //获取了SharePreferences对象 pref = PreferenceManager.getDefaultSharedPreferences(this); usernameEdit = (EditText) findViewById(R.id.username); emailEdit = (EditText) findViewById(R.id.mail); circleImageView = (CircleImageView) findViewById(R.id.icon_image); show_password = (ImageView) findViewById(R.id.mail_Visibility); rememberPass = (CheckBox) findViewById(R.id.remember_password); titleButton = (Button) findViewById(R.id.title_back_1); homeButton = (Button) findViewById(R.id.title_home); loginButton = (Button) findViewById(R.id.login); titleButton.setOnClickListener(this); homeButton.setOnClickListener(this); loginButton.setOnClickListener(this); show_password.setOnClickListener(this); // if () //调用SharePreferences的getBoolean()方法获取remember_password这个键值,一开始默认的为false boolean isRemember = pref.getBoolean("remember_password",false); if (isRemember){//将账号和密码都设置文本框中 String username = pref.getString("username",""); String email = pref.getString("mail",""); usernameEdit.setText(username); emailEdit.setText(email); //将CheckBox状态设置为勾选 rememberPass.setChecked(true); }}@Override public void onClick(View v) {switch (v.getId()){case R.id.title_back_1:finish(); break; case R.id.title_home:break; case R.id.login:String username = usernameEdit.getText().toString(); String email = emailEdit.getText().toString(); editor = pref.edit(); //检查复选框是否被选中 if (rememberPass.isChecked()){editor.putBoolean("remember_password",true); editor.putString("username",username); editor.putString("mail",email); }else {editor.clear(); }editor.apply();
Intent intent = new Intent();
intent.putExtra("username_return",username); intent.putExtra("email_return",email); setResult(RESULT_OK,intent); finish(); break; default:}}
接下来我们看一下密码的隐藏跟显示功能
隐藏EditText1
editText1.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
显示EditText1
editText1.setTransformationMethod(PasswordTransformationMethod.getInstance());
效果如下:
具体的项目可以访问我的GIthub及刚写的一个未完成的项目
登录界面的记住密码和密码的隐藏、显示相关推荐
- android开发实例之minitwitter登录界面+代码,登录界面_记住密码
实现登录界面的记住密码功能 实验目的 1.掌握SharedPreferences类,这个类可以实现简单的存储,主要用于保存窗口状态 实验效果 主要代码 LoginActivity package co ...
- Android studio登录界面之记住密码
登录界面之记住密码 文章目录 登录界面之记住密码 文件存储的方式: 记住密码 存储数据 读取数据 完整代码 登录界面的博客: https://blog.csdn.net/genijmni/articl ...
- php 清除浏览器记住密码,网页登录中实现记住用户名和密码的功能(完成自动登录)...
网页记住用户名,就是我们经常会用到的,登录下面有一个复选框,可以设置用户7天内或1个月不需要登录,只要你进行本网站系统查询cookie是否有相差用户名与密码如果是就把信息提取再到数据库中查询,如果co ...
- PyQt5教程(十一)——实现QQ登录界面(五、实现密码框中的小键盘图标)
PyQt5教程(十一)--实现QQ登录界面(五.实现密码框中的小键盘图标) 上篇文件,我们添加了qss样式表,其中也添加了登录界面密码框中的小键盘按钮资源风格. PyQt5教程(十)--实现QQ登录界 ...
- Android简单登录界面,保存账号和密码(基础,详解)
一 问题描述: 制作一个简单的登录界面,并使用文件储存方式储存用户名和密码,在下次打开应用时自动获取上次储存的账户和密码 二 解题思路: 文件储存: 文件存储是Android中最基本的一种数据存储方式 ...
- flutter显示图标_flutter中密码输入如何切换隐藏/显示?
可以通过TextFormField的obscureText属性控制密码输入的隐藏/显示,示例代码如下:@override void initState() { passwordVisible = fa ...
- C#窗体程序连接SQL Server数据库实现账号登录、账号注册、修改密码、账号注销和实名认证(不定时更新)
目录 一.配置数据库文件和程序代码 二.配置C#窗体控件布局和源代码 1.窗体Form1:账号登录界面 2.窗体Form2:账号注册界面 3.窗体Form3:主界面 4.窗体Form4:修改密码界面 ...
- 写一个登录界面——用窗体界面实现
写一个登录界面--用窗体界面实现 我们在上网的时候总能看到各种各样的窗体界面,比如:网页角落突然弹出的小广告.登录界面.画图板--接下来我就来讲讲如何创建一个窗体界面并制作一个登录界面. 窗体类的英文 ...
- 移动应用程序设计基础——期末考核——登录界面与简单日记本的综合实践
<移动应用程序设计基础>期末报告 课题名称: <移动应用开发基础>上机考核 所使用的工具软件及环境: JDK,Android Studio 一.课题背景 期末上机考核,将实验四 ...
最新文章
- 组合计数 ---- 2020 EC final B. Rectangle Flip 2(枚举+组合计数)
- 英语单词 factor cull
- 在线实时大数据平台Storm开发之wordcount
- 乐理 music theory
- 【Boost】系列02:内存管理之scoped_ptr智能指针
- python io多路复用框架_python之IO多路复用
- 2018.5.15Html标签初学
- CacheCloud运维管理平台学习笔记
- mysql备份工具命令xtra_mysql xtrabackup备份工具使用
- 个人微信api接口调用,拉取微信朋友圈、发朋友圈
- python头像右上角加红色数字_「微信头像右上角数字」微信头像右上角红色数字怎么添加? - seo实验室...
- Golang map有序化
- 英特尔芯片的后缀_英特尔处理器后缀的含义是什么?
- 小人有三种,这种最阴险,最好策略不是硬杠
- Linux笔记------关闭系统漏洞补丁(spectre meltdown补丁)
- ecshop手机号码归属地
- 2021年茶艺师(初级)模拟考试及茶艺师(初级)实操考试视频
- 【教程】树莓派bt下载机之Transmission Web Interface
- 全球与中国二甲酮市场深度研究分析报告
- aes加密 java_Java中的微信支付(2):API V3 微信平台证书的获取与刷新