过了这么久了,看看自己的园龄都17天了,一直在总结,从未缺席,我还是很开心的,踏踏实实的完成自己能学到的。

今天学习SP

SP:全称SharedPreferences,别问我为啥知道,因为打了好多遍了,哈哈,这个东西你可以认为它可以给你的项目存储一些轻量级的数据放到一个文件。

就拿我们今天的例子来说,我们用SP实现输入用户和昵称,通过复选框CheckBox监听,判断是否记住密码,而记住密码的这个操作,就是把用户,密码,以及是否选择了这个复选框的情况用一个文件存进去。

我当时的理解就是创建一个类似数据库的小文件,要取的话就用键值对去取出来。

alpha的作用就是给图片设置透明度,其他的都是简单的布局控件。

现在布局的基本套路确定了,就是使用线性布局和帧布局以及权重的套用,就基本能写出自己想要的布局了。

权重就是weight那个

和布局搭配使用,就拿线性布局来说,线性布局有水平和垂直,如果是水平方向添加权重,那么它的高就要设置为0dp

这是因为我们设置水平方向权重的话是改变高,那么就不用设置高了。

然后就是Gravity了,如果是Layout_gravity就是针对它本身在父布局中的位置

gravity就是对于它内部子布局的位置

布局代码是上面这边;

下面的是主活动的代码

学到了一个根据布局生成代码的好东西;

LayoutCreator

这里面的这三个方法都是自动生成的,这样写起来是不是很棒,有点偷懒了。

https://www.jianshu.com/p/46d0f191178f

效果就是

这个界面是刚启动的界面,为啥会有账户和密码,这就是SP它的作用了,

只要监听你勾选了记住密码,即使你结束了程序,下次启动还是会加载你记住的密码。

我觉得还比较简单。

然后这边解释下核心代码吧:

username = findViewById(R.id.username);  输入账户的
password= findViewById(R.id.password); 输入密码的
CheckBox checkBox=findViewById(R.id.remember); 复选框
Button log_in=findViewById(R.id.login);  登录按钮
Button register=findViewById(R.id.register); 注册按钮
log_in.setOnClickListener(this); 设置监听,为啥监听里面是this,因为监听有两种方法,一种是遍历实现,一种是让类实现,
这就是让类实现,就是让类implements视图监听,然后实现它的OnClick方法
final SharedPreferences sp=this.getSharedPreferences("log5.25",MODE_PRIVATE);
这边就是创建SP,如果说有这个文件就调用,没得就自己创建,第一个参数是文件名,第二个参数是模式,默认是隐私,其他很多被弃用了,就只用这个吧
String StringUser=sp.getString("usernameString","");这就相当于键值对,用get第一个参数为键,后面的第二个就是没找到这个键,默认返回的字符串
String StringPassword=sp.getString("passwordString","");
Boolean isChecked=sp.getBoolean("isChecked",false); 这个也是一样,只不过它是Boolean的数据,所以默认返回值是false
username.setText(StringUser); 既然取出来了,就给它写到账户,密码,
password.setText(StringPassword);
checkBox.setChecked(isChecked); 这边也是写入复选框
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
接着就是给复选框设置监听,
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Log.d("this", isChecked + "");
SharedPreferences.Editor editor = sp.edit(); 这个就是调用SP的编辑器
String usernameString = username.getText().toString().trim(); 然后把我们在账户和密码输入的东西存下来
String passwordString = password.getText().toString().trim();trim在java中是去两端多余空格的
if(isChecked)如果它勾选了那个复选框
{
editor.putString("usernameString",usernameString);就把数据写到那个文件
editor.putString("passwordString", passwordString);
editor.putBoolean("isChecked", isChecked);
editor.commit();最后提交,提交有两种常用方式apply和commit,一个异步一个同步
        异步就是编辑的时候一句话一句话写
        同步就是等到执行到commit语句,把记录要写的东西一口气写进去(同步不适合大量数据存储,不然存入时会卡顿,影响用户体验)
}
else{
editor.clear().commit(); 这边就是,如果你都没勾选记住密码,那么就清除文件里的数据,不然下次开启还是会记住密码。
}
}
}); 提醒的是活动里自动生成时写的submit方法,它的作用很简单吧,就是看你输入东西没,然后输入的是不是合格的,
不然就不给你跳其他活动去。
因为本牛崽这边还写了个活动Main2Activity,用来展示登录成功的。 今天的内容就到这,总体来说还是比较简单的。
创建视图,获取SP,创建SP文件,然后用键得到值
再创建复选框监听,存入键值对 这一天天的,今天体育考核,终于明白了一个道理“一鼓作气,再而衰,三而竭”
做俯卧撑,第一次做的好像不太好看,但是做的个数挺足;就第二次,第二次感觉手酸了,没做到合格;休息了会,第三次,颤抖的做完,勉勉强强吧。
巅峰时刻可能还是首秀,所以不要拿自己人生的首秀开玩笑,有可能那就是巅峰。

Android SP的具体内容的更多相关文章

  1. Android组件系列----ContentProvider内容提供者

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  2. android学习十二(android的Content Provider(内容提供器)的使用)

    文件存储和SharePreference存储以及数据存储一般为了安全,最好用于当前应用程序中訪问和存储数据.内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能 ...

  3. Android 应用程序之间内容分享详解(一)

    一个Andoird应用程序的重要的地方是他们有相互沟通和整合的能力,一个应用程序可以和另一个应用程序交互,接下来我们来看看Android应用之间的内容分享 当你构建Intent的时候,必须要指定Int ...

  4. Android 应用程序之间内容分享详解(二)

    转载请注明出处:http://blog.csdn.net/xiaanming/article/details/9428613 Android 应用程序之间内容分享详解(一) 之前给大家分享了你开发的应 ...

  5. Android - HelloWorld的Layout内容

    Android - HelloWorld的Layout内容 本文地址: http://blog.csdn.net/caroline_wendy 作为最基础的Android程序, HelloWorld的 ...

  6. Android开发学习—— ContentProvider内容提供者

    * 应用的数据库是不允许其他应用访问的* 内容提供者的作用就是让别的应用访问到你的数据库.把私有数据暴露给其他应用,通常,是把私有数据库的数据暴露给其他应用. Uri:包含一个具有一定格式的字符串的对 ...

  7. Android入门(十四)内容提供器-实现跨程序共享实例

    原文链接:http://www.orlion.ga/661/ 打开SQLite博文中创建的 DatabaseDemo项目,首先将 MyDatabaseHelper中使用 Toast弹出创建数据库成功的 ...

  8. android: 创建自己的内容提供器

    我们学习了如何在自己的程序中访问其他应用程序的数据.总体来说思 路还是非常简单的,只需要获取到该应用程序的内容 URI,然后借助 ContentResolver 进行CRUD 操作就可以了.可是你有没 ...

  9. [Android Pro] 监听内容提供者ContentProvider的数据变化

    转载自:http://blog.csdn.net/woshixuye/article/details/8281385 一.提出需求 有A,B,C三个应用,B中的数据需要被共享,所以B中定义了内容提供者 ...

随机推荐

  1. 错题重错之枪战Maf

    题目描述 有 n 个人,用1∼n 进行编号,每个人手里有一把手枪.一开始所有人都选定一个人瞄准(有可能瞄准自己).然后他们按某个顺序开枪,且任意时刻只有一个人开枪.因此,对于不同的开枪顺序,最后死的人 ...

  2. [USACO3.1]形成的区域(扫描线+离散化)

    [USACO3.1]形成的区域(P6432) 日期:2020-05-31 目录 [USACO3.1]形成的区域(P6432) 一.题意分析 二.算法分析 1. 暴力 0). 初始状态(红点为原点) 1 ...

  3. 09-Python异常

    一.简介 在实际的工作过程中,我们会遇到各种问题,比如文件不存在,代码运行不符合某些特定逻辑等,程序在运行时,遇到这些问题便会发生异常.英文是Exception. a = float(input('请 ...

  4. 【Maven】总结

    导言:生产环境下开发不再是一个项目一个工程,而是每一个模块创建一个工程,而多个模块整合在一起就需要 使用到像 Maven 这样的构建工具. 1 Why? 1.1 真的需要吗? Maven 是干什么用的 ...

  5. 什么是A站、B站、C站、D站、E站、F站、G站、HIJKLM站N站?

    A站AcFun弹幕视频网,简称“A站”,成立于2007年6月,取意于Anime Comic Fun,是中国大陆第一家弹幕视频网站.A站以视频为载体,逐步发展出基于原生内容二次创作的完整生态,拥有高质量 ...

  6. 使用数据泵(expdp、impdp)迁移数据库流程

    转载原文地址为:http://blog.itpub.net/26736162/viewspace-2652256/ 使用数据泵迁移数据库流程 How To Move Or Copy A Databas ...

  7. 波士顿动力狗 SPOT 权威购买指北

    两周前 油管科技视频播主 Lew Later 发布了一支 波士顿动力狗子的开箱视频,短短两周的时间内这支视频的播放量就达到了367万, 在Lew Later 近期发布的视频中,这支视频的播放量绝对算得 ...

  8. 抛出这8个问题,检验一下你到底会不会ThreadLocal,来摸个底~

    0.问题 和Synchronized的区别 存储在jvm的哪个区域 真的只是当前线程可见吗 会导致内存泄漏么 为什么用Entry数组而不是Entry对象 你学习的开源框架哪些用到了ThreadLoca ...

  9. 深入掌握K8S Pod

    k8s系列文章: 什么是K8S K8S configmap介绍 Pod是k8s中最小的调度单元,包含了一个"根容器"和其它用户业务容器. 如果你使用过k8s的话,当然会了解pod的 ...

  10. django-rest-framework-源码解析001-整体框架

    简介 Django Rest Framework是一个强大且灵活的工具包,主要用以构建RESTful风格的Web API. Django REST Framework(简称DRF)可以在Django的 ...