1. 设计登录页面

比较简单,重要的点就一个,有一个记住密码的按钮。

代码实现

<?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:layout_width="match_parent"android:layout_height="match_parent"><androidx.constraintlayout.widget.Guidelineandroid:id="@+id/guideline"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"app:layout_constraintGuide_percent="0.13" /><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="登录"android:textSize="30sp"app:layout_constraintBottom_toTopOf="@+id/guideline"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.498"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.789" /><EditTextandroid:id="@+id/editTextTextPersonName"android:layout_width="wrap_content"android:layout_height="wrap_content"android:ems="10"android:hint="请输入用户名"android:inputType="textPersonName"app:layout_constraintBottom_toTopOf="@+id/guideline2"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="@+id/guideline"><requestFocus /></EditText><androidx.constraintlayout.widget.Guidelineandroid:id="@+id/guideline2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"app:layout_constraintGuide_percent="0.24212272" /><androidx.constraintlayout.widget.Guidelineandroid:id="@+id/guideline3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"app:layout_constraintGuide_percent="0.36981758" /><EditTextandroid:id="@+id/editTextTextPassword"android:layout_width="wrap_content"android:layout_height="wrap_content"android:ems="10"android:hint="请输入密码"android:inputType="textPassword"app:layout_constraintBottom_toTopOf="@+id/guideline3"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="@+id/guideline2" /><CheckBoxandroid:id="@+id/checkBox"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="记住密码"app:layout_constraintBottom_toTopOf="@+id/guideline4"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.839"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="@+id/guideline3"app:layout_constraintVertical_bias="0.533" /><androidx.constraintlayout.widget.Guidelineandroid:id="@+id/guideline4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"app:layout_constraintGuide_percent="0.46" /><Buttonandroid:id="@+id/button"android:layout_width="0dp"android:layout_height="wrap_content"android:text="登录"app:layout_constraintBottom_toTopOf="@+id/guideline5"app:layout_constraintEnd_toEndOf="@+id/editTextTextPassword"app:layout_constraintStart_toStartOf="@+id/editTextTextPassword"app:layout_constraintTop_toTopOf="@+id/guideline4" /><androidx.constraintlayout.widget.Guidelineandroid:id="@+id/guideline5"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"app:layout_constraintGuide_percent="0.6" /><TextViewandroid:id="@+id/textView2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="注册"android:textSize="18sp"app:layout_constraintBottom_toTopOf="@+id/guideline6"app:layout_constraintEnd_toEndOf="@+id/button"app:layout_constraintStart_toStartOf="@+id/button"app:layout_constraintTop_toTopOf="@+id/guideline5" /><androidx.constraintlayout.widget.Guidelineandroid:id="@+id/guideline6"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"app:layout_constraintGuide_percent="0.75" />
</androidx.constraintlayout.widget.ConstraintLayout>

2. 用户登录信息的获取和保存

// 当登录按钮被点击了
button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// mypwd表示的是文件名 (在 /data/data/<package name>/mypwd.xml 中)// MODE_PRIVATE 指的是文件的读取模式// 1. 通过SharedPreferences保存数据SharedPreferences mypwd = getSharedPreferences("mypwd", MODE_PRIVATE);SharedPreferences.Editor editor = mypwd.edit();editor.putString("name", editTextTextPersonName.getText().toString());editor.putString("pwd", editTextTextPassword.getText().toString());editor.apply(); // 异步的}
});

3. 通过SharedPreferences保存的数据查看

通过输入信息,点击登录,我们的数据就被在配置文件中了。

点击下面的两个窗口,打开一个页面。

在 data/data/<项目名>/shared_prefs/fileName.xml 可以找到配置文件。

4. 数据通过代码来进行读取

// 1. 获取数据对象
SharedPreferences mypwd = getSharedPreferences("mypwd", MODE_PRIVATE);
// 2. 获取内容
String username = mypwd.getString("name", "");
String password = mypwd.getString("pwd", "");
// 3. 数据显示
usernameDom = (TextView) findViewById(R.id.username);
passwordDom = (TextView) findViewById(R.id.password);
usernameDom.setText(username);
passwordDom.setText(password);

运行效果:

【安卓】基于SharedPreferences实现用户登录信息的存储相关推荐

  1. 基于jwt的用户登录认证

    最近在app的开发过程中,做了一个基于token的用户登录认证,使用vue+node+mongoDB进行的开发,前来总结一下. token认证流程: 1:用户输入用户名和密码,进行登录操作,发送登录信 ...

  2. 用户修改了信息jwt服务器怎么识别,django使用JWT保存用户登录信息

    什么是JWT? Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站 ...

  3. php注册登录描述,基于PHP实现用户登录注册功能的详细教程

    教程前先给大家看看小编的实现成果吧! 图1: 图2: 图3: 教程: 实现这个功能我们需要五个php文件: login.php (登录界面,如图2) 登录 登录页面 用户名: required=&qu ...

  4. 通过cookie保存并读取用户登录信息

    浏览器将cookie以key/value的形式保存到客户机的某个指定目录 通过cookie的getCookies()方法可获取所有cookie对象的集合 通过cookie对象的getName()方法可 ...

  5. oracle通过sid远程登录,oracle怎么捕获用户登录信息,如SID,IP地址等

    可以利用登录触发器,如 CREATE OR REPLACE TRIGGER tr_login_record AFTER logon ON DATABASE DECLARE miUserSid NUMB ...

  6. 如何在redhat8里使用gcc命令_如何使用who命令检查用户登录信息

    请关注本头条号,每天坚持更新原创干货技术文章. 如需学习视频,请在微信搜索公众号"智传网优"直接开始自助视频学习 1. 前言 本教程主要介绍如何使用who命令检查用户登录信息. 如 ...

  7. 通过cookie保存并读取用户登录信息实例

    通过cookie的getCookies()方法可获取所有cookie对象的集合:通过getName()方法可以获取指定的名称的cookie:通过getValue()方法获取到cookie对象的值.另外 ...

  8. JavaScript之判断用户登录信息

    1.今天来介绍一下如何使用JavaScript脚本语言来判断用户登录信息,在我学struts2时,就有输入校验和拦截器来实现判断用户登录时,输入的用户信息是否完整,输入的用户信息是否符合用户的要求等等 ...

  9. 把discuzX 的用户登录信息添加到纯静态页面

    把discuzX 的用户登录信息添加到纯静态页面 转:http://cq6.com/forum.php?mod=viewthread&tid=86560&extra=page%3D1& ...

最新文章

  1. 翻译们又要失业?Facebook最新无监督机器翻译成果,BLEU提升10个点!
  2. QT5.11 + VS2017 环境搭建
  3. 【蓝桥杯】算法提高 7-2求arccos值
  4. 优化你的手游:使用脏矩形技术
  5. js移除字符串的中文/空格
  6. springboot ElasticSearch 简单的全文检索高亮
  7. 数据结构:(5)算法分析基础
  8. python-docx 如何获取当前字号_餐饮老字号迈上“云端”
  9. 吴恩达《机器学习》第六章:逻辑回归
  10. c语言指针和数组的转换,指针和数组的转换
  11. SAP B1 VS女士的Navision ERP的比较 - 知道如何选择软件
  12. java过滤器是用来干什么的_java过滤器有什么作用
  13. C语言union总结
  14. 案例2:随机森林来填补缺失值
  15. 光遇显示服务器已满怎么办,光遇服务器已满怎么办 光遇服务器已满您正在登陆队列中解决方法...
  16. 深入剖析ISA防火墙策略执行过程
  17. 前端缓存/浏览器缓存机制
  18. Bzoj4826 [Hnoi2017]影魔
  19. 呼吸灯——verilog 实现
  20. 喜马拉雅音频数据+Python+xm-sign突破

热门文章

  1. MFC动态创建控件并响应事件代码实现过程
  2. fdtd中时间监视器怎么放_FDTDsolutions经典问题集.pdf
  3. 第四范式亮相世界智能大会 共探智能发展下人才培养路径
  4. Debug Tensorflow: 随着训练进行,内存消耗越来越大
  5. tensorflow随笔-底层梯度
  6. 新书首发 | 《机器学习 公式推导与代码实现》正式出版!(文末送书)
  7. 【Python】扫盲帖:关于在Windows、Linux和Mac上安装设置Python的问题
  8. 【Python】嫦娥探月数据(PDS)处理与可视化
  9. 【Python基础】为什么更改列表'y'也会更改列表'x'?
  10. 网易云信亮相LiveVideoStackCon 2019,分享BBR在实时音视频领域的应用