过了这么久了,看看自己的园龄都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. day26 作业(ATM第二版)

    目录 start.py conf.settings.py core.src.py db.db_handler.py interface.bank_interface.py interface.shop ...

  2. 解决Chrome插件安装时程序包无效:"CRX_HEADER_INVALID"

    打开chorme的扩展程序(设置——>更多工具——>扩展程序)chrome://extensions 选择开发者模式 拖拽.crx至Chrome的扩展程序列表 安装失败 报错为:程序包无效 ...

  3. vue+element-ui JYAdmin后台管理系统模板-集成方案【项目搭建篇2】

    项目搭建时间:2020-06-29 本章节:讲述基于vue/cli, 项目的基础搭建. 本主题讲述了: 1.跨域配置 2.axios请求封装 3.eslint配置 4.环境dev,test,pro(开 ...

  4. flask 源码专题(五):SqlAlchemy 中操作数据库时session和scoped_session的区别

    1原生session: from sqlalchemy.orm import sessionmaker from sqlalchemy import create_engine from sqlalc ...

  5. educoder SML程序设计题线下编译环境搭建

    背景 最近<串并行数据结构与算法设计>的老师在educoder上布置了一些SML程序设计题,虽然网站上有在线编译功能,但还是在线下编译调试方便,特记录编译环境过程如下(我用的GVIM,但N ...

  6. 小谢第36问:elemet - table表格修改后表格行高亮显示且定位到当前行当前页

    第一次做这个需求得时候很乱,总是在表格页和修改页徘徊,总觉得什么都会,但是就是做不出自己想要得效果 其实如果先把思路搞清楚,这个问题得知识点却是不多,以下是我对表格高亮显示得思路: 首先,我会从已知得 ...

  7. OSCP Learning Notes - WebApp Exploitation(5)

    Remote File Inclusion[RFI] Prepare: Download the DVWA from the following website and deploy it on yo ...

  8. 集训作业 洛谷P1010 幂次方

    这个…… 这个题看上去有点难的样子. 仔细看看,感觉有点简单.啊,是递归啊,正经的看一看,好像是把一个数分成2的几次方的和. 然后余数和比他小的最大的2的次方数如果不是2的一次方或者2的0次方,就继续 ...

  9. OA系统从选型到实施完整攻略

    本文结合一线IT人士分享OA实施经验,单纯地讲述OA的选型与实施,为相关经验较少的IT人士提供真正的帮助. 一.如何选择OA系统 说起OA选型,稳定性.易用性.灵活性.成本和服务少不了.但是,只了解这 ...

  10. 【题解】cf1381c Mastermind

    序 (一道很考验思维质量的构造好题,而且需要注意的细节也很多.) 本题解主体使用的是简洁且小常数的\(O(nlogn)\)时间复杂度代码,并且包含其他方法的分析留给读者自行实现(其实是自己不会写或者写 ...