登录界面的记住密码功能

先上布局代码:

<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文件中的数据清除掉就可以了

else {
editor.clear();
}

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及刚写的一个未完成的项目

登录界面的记住密码和密码的隐藏、显示相关推荐

  1. android开发实例之minitwitter登录界面+代码,登录界面_记住密码

    实现登录界面的记住密码功能 实验目的 1.掌握SharedPreferences类,这个类可以实现简单的存储,主要用于保存窗口状态 实验效果 主要代码 LoginActivity package co ...

  2. Android studio登录界面之记住密码

    登录界面之记住密码 文章目录 登录界面之记住密码 文件存储的方式: 记住密码 存储数据 读取数据 完整代码 登录界面的博客: https://blog.csdn.net/genijmni/articl ...

  3. php 清除浏览器记住密码,网页登录中实现记住用户名和密码的功能(完成自动登录)...

    网页记住用户名,就是我们经常会用到的,登录下面有一个复选框,可以设置用户7天内或1个月不需要登录,只要你进行本网站系统查询cookie是否有相差用户名与密码如果是就把信息提取再到数据库中查询,如果co ...

  4. PyQt5教程(十一)——实现QQ登录界面(五、实现密码框中的小键盘图标)

    PyQt5教程(十一)--实现QQ登录界面(五.实现密码框中的小键盘图标) 上篇文件,我们添加了qss样式表,其中也添加了登录界面密码框中的小键盘按钮资源风格. PyQt5教程(十)--实现QQ登录界 ...

  5. Android简单登录界面,保存账号和密码(基础,详解)

    一 问题描述: 制作一个简单的登录界面,并使用文件储存方式储存用户名和密码,在下次打开应用时自动获取上次储存的账户和密码 二 解题思路: 文件储存: 文件存储是Android中最基本的一种数据存储方式 ...

  6. flutter显示图标_flutter中密码输入如何切换隐藏/显示?

    可以通过TextFormField的obscureText属性控制密码输入的隐藏/显示,示例代码如下:@override void initState() { passwordVisible = fa ...

  7. C#窗体程序连接SQL Server数据库实现账号登录、账号注册、修改密码、账号注销和实名认证(不定时更新)

    目录 一.配置数据库文件和程序代码 二.配置C#窗体控件布局和源代码 1.窗体Form1:账号登录界面 2.窗体Form2:账号注册界面 3.窗体Form3:主界面 4.窗体Form4:修改密码界面 ...

  8. 写一个登录界面——用窗体界面实现

    写一个登录界面--用窗体界面实现 我们在上网的时候总能看到各种各样的窗体界面,比如:网页角落突然弹出的小广告.登录界面.画图板--接下来我就来讲讲如何创建一个窗体界面并制作一个登录界面. 窗体类的英文 ...

  9. 移动应用程序设计基础——期末考核——登录界面与简单日记本的综合实践

    <移动应用程序设计基础>期末报告 课题名称: <移动应用开发基础>上机考核 所使用的工具软件及环境: JDK,Android Studio 一.课题背景 期末上机考核,将实验四 ...

最新文章

  1. 组合计数 ---- 2020 EC final B. Rectangle Flip 2(枚举+组合计数)
  2. 英语单词 factor cull
  3. 在线实时大数据平台Storm开发之wordcount
  4. 乐理 music theory
  5. 【Boost】系列02:内存管理之scoped_ptr智能指针
  6. python io多路复用框架_python之IO多路复用
  7. 2018.5.15Html标签初学
  8. CacheCloud运维管理平台学习笔记
  9. mysql备份工具命令xtra_mysql xtrabackup备份工具使用
  10. 个人微信api接口调用,拉取微信朋友圈、发朋友圈
  11. python头像右上角加红色数字_「微信头像右上角数字」微信头像右上角红色数字怎么添加? - seo实验室...
  12. Golang map有序化
  13. 英特尔芯片的后缀_英特尔处理器后缀的含义是什么?
  14. 小人有三种,这种最阴险,最好策略不是硬杠
  15. Linux笔记------关闭系统漏洞补丁(spectre meltdown补丁)
  16. ecshop手机号码归属地
  17. 2021年茶艺师(初级)模拟考试及茶艺师(初级)实操考试视频
  18. 【教程】树莓派bt下载机之Transmission Web Interface
  19. 全球与中国二甲酮市场深度研究分析报告
  20. aes加密 java_Java中的微信支付(2):API V3 微信平台证书的获取与刷新

热门文章

  1. 如何隐藏CAD图纸中的部分图形对象?CAD局部隐藏
  2. 亚马逊运营选品时的几个小技巧,爆款日出千单
  3. GPU大百科全书 最终章:33毫秒的咏叹调
  4. 十二年了,阿里云终于盈利了
  5. 个人能力--认知能力
  6. 蓝杰学习01--登陆界面验证用户名和密码
  7. 用错错错错错错知知中算改改不不写一句富含哲理的话
  8. 《乔布斯传》圈点(5)
  9. prompt set feedback off set define off (转)
  10. 老周语录-做出好产品的关键