*:first-child {
margin-top: 0 !important; }
body > *:last-child {
margin-bottom: 0 !important; }

a {
color: #4183C4;
text-decoration: none; }
a.absent {
color: #cc0000; }
a.anchor {
display: block;
padding-left: 30px;
margin-left: -30px;
cursor: pointer;
position: absolute;
top: 0;
left: 0;
bottom: 0; }

h1, h2, h3, h4, h5, h6 {
margin: 20px 0 10px;
padding: 0;
font-weight: bold;
-webkit-font-smoothing: antialiased;
cursor: text;
position: relative; }

h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, h5:hover a.anchor, h6:hover a.anchor {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA09pVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoMTMuMCAyMDEyMDMwNS5tLjQxNSAyMDEyLzAzLzA1OjIxOjAwOjAwKSAgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUM2NjlDQjI4ODBGMTFFMTg1ODlEODNERDJBRjUwQTQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUM2NjlDQjM4ODBGMTFFMTg1ODlEODNERDJBRjUwQTQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5QzY2OUNCMDg4MEYxMUUxODU4OUQ4M0REMkFGNTBBNCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5QzY2OUNCMTg4MEYxMUUxODU4OUQ4M0REMkFGNTBBNCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsQhXeAAAABfSURBVHjaYvz//z8DJYCRUgMYQAbAMBQIAvEqkBQWXI6sHqwHiwG70TTBxGaiWwjCTGgOUgJiF1J8wMRAIUA34B4Q76HUBelAfJYSA0CuMIEaRP8wGIkGMA54bgQIMACAmkXJi0hKJQAAAABJRU5ErkJggg==) no-repeat 10px center;
text-decoration: none; }

h1 tt, h1 code {
font-size: inherit; }

h2 tt, h2 code {
font-size: inherit; }

h3 tt, h3 code {
font-size: inherit; }

h4 tt, h4 code {
font-size: inherit; }

h5 tt, h5 code {
font-size: inherit; }

h6 tt, h6 code {
font-size: inherit; }

h1 {
font-size: 28px;
color: black; }

h2 {
font-size: 24px;
border-bottom: 1px solid #cccccc;
color:#00ccff;
margin: 25px auto 12px auto;
padding-bottom: 2px;
}

h3 {
font-size: 18px;
color:#993300;}

h4 {
font-size: 16px; }

h5 {
font-size: 14px; }

h6 {
color: #777777;
font-size: 14px; }

p, blockquote, ul, ol, dl, li, table, pre {
margin: 0 0; }

/*hr {
background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAECAYAAACtBE5DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OENDRjNBN0E2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OENDRjNBN0I2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4Q0NGM0E3ODY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4Q0NGM0E3OTY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqqezsUAAAAfSURBVHjaYmRABcYwBiM2QSA4y4hNEKYDQxAEAAIMAHNGAzhkPOlYAAAAAElFTkSuQmCC) repeat-x 0 0;
border: 0 none;
color: #cccccc;
height: 4px;
padding: 0;
}*/
hr {
margin: 0 0 19px;
border: 0;
border-bottom: 1px solid #ccc;
}

body > h2:first-child {
margin-top: 0;
padding-top: 0; }
body > h1:first-child {
margin-top: 0;
padding-top: 0; }
body > h1:first-child + h2 {
margin-top: 0;
padding-top: 0; }
body > h3:first-child, body > h4:first-child, body > h5:first-child, body > h6:first-child {
margin-top: 0;
padding-top: 0; }

a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 {
margin-top: 0;
padding-top: 0; }

h1 p, h2 p, h3 p, h4 p, h5 p, h6 p {
margin-top: 0; }

li p.first {
display: inline-block; }
li {
margin: 0; }
ul, ol {
padding-left: 30px; }

ul :first-child, ol :first-child {
margin-top: 0; }

dl {
padding: 0; }
dl dt {
font-size: 14px;
font-weight: bold;
font-style: italic;
padding: 0;
margin: 15px 0 5px; }
dl dt:first-child {
padding: 0; }
dl dt > :first-child {
margin-top: 0; }
dl dt > :last-child {
margin-bottom: 0; }
dl dd {
margin: 0 0 15px;
padding: 0 15px; }
dl dd > :first-child {
margin-top: 0; }
dl dd > :last-child {
margin-bottom: 0; }

blockquote {
border-left: 4px solid #dddddd;
padding: 0 15px;
color: #777777; }
blockquote > :first-child {
margin-top: 0; }
blockquote > :last-child {
margin-bottom: 0; }

/*table {
padding: 0;border-collapse: collapse; }
table tr {
border-top: 1px solid #cccccc;
background-color: white;
margin: 0;
padding: 0; }
table tr:nth-child(2n) {
background-color: #f8f8f8; }
table tr th {
font-weight: bold;
border: 1px solid #cccccc;
margin: 0;
padding: 6px 13px; }
table tr td {
border: 1px solid #cccccc;
margin: 0;
padding: 6px 13px; }
table tr th :first-child, table tr td :first-child {
margin-top: 0; }
table tr th :last-child, table tr td :last-child {
margin-bottom: 0; }*/

img {
max-width: 100%; }

span.frame {
display: block;
overflow: hidden; }
span.frame > span {
border: 1px solid #dddddd;
display: block;
float: left;
overflow: hidden;
margin: 13px 0 0;
padding: 7px;
width: auto; }
span.frame span img {
display: block;
float: left; }
span.frame span span {
clear: both;
color: #333333;
display: block;
padding: 5px 0 0; }
span.align-center {
display: block;
overflow: hidden;
clear: both; }
span.align-center > span {
display: block;
overflow: hidden;
margin: 13px auto 0;
text-align: center; }
span.align-center span img {
margin: 0 auto;
text-align: center; }
span.align-right {
display: block;
overflow: hidden;
clear: both; }
span.align-right > span {
display: block;
overflow: hidden;
margin: 13px 0 0;
text-align: right; }
span.align-right span img {
margin: 0;
text-align: right; }
span.float-left {
display: block;
margin-right: 13px;
overflow: hidden;
float: left; }
span.float-left span {
margin: 13px 0 0; }
span.float-right {
display: block;
margin-left: 13px;
overflow: hidden;
float: right; }
span.float-right > span {
display: block;
overflow: hidden;
margin: 13px auto 0;
text-align: right; }

code, tt {
margin: 0 2px;
padding: 0 0px;
white-space: nowrap;
/*background-color: #fff;*/
color: rgba(51, 102, 255, 255);
/*border: 1px solid #eaeaea;*/
/*background-color: #f8f8f8;*/
/*border-radius: 3px; */}

pre code {
margin: 0;
padding: 0;
white-space: pre;
border: none;
color: rgba(0, 0, 0, 255);
background: transparent; }

.highlight pre {
background-color: #f8f8f8;
border: 1px solid #cccccc;
font-size: 13px;
line-height: 19px;
overflow: auto;
padding: 6px 10px;
border-radius: 3px; }

pre {
background-color: #f8f8f8;
border: 1px solid #cccccc;
font-size: 14px;
line-height: 19px;
overflow: auto;
padding: 6px 10px;
border-radius: 3px; }
pre code, pre tt {
background-color: transparent;
border: none; }

sup {
font-size: 0.83em;
vertical-align: super;
line-height: 0;
}
* {
-webkit-print-color-adjust: exact;
}
@media screen and (min-width: 914px) {
body {
/*width: 854px;*/
/*margin:0 auto;*/
}
}
@media print {
table, pre {
page-break-inside: avoid;
}
pre {
word-wrap: break-word;
}
}

#cnblogs_post_body li ul li {
list-style-type: circle !important;
}
#cnblogs_post_body a {
text-decoration: none;
color: #4183C4;
}

#mainContent .postBody h2 {
margin: 25px auto 12px auto;
padding-bottom: 2px;
}
-->

常见布局

相对布局

RelativeLayout
  • 组件默认左对齐、顶部对齐

  • 设置组件在指定组件的右边

      android:layout_toRightOf="@id/tv1"
  • 设置在指定组件的下边

      android:layout_below="@id/tv1"
  • 设置右对齐父元素

      android:layout_alignParentRight="true"
  • 设置与指定组件右对齐

      android:layout_alignRight="@id/tv1"

线性布局

LinearLayout
  • 指定各个节点的排列方向

      android:orientation="horizontal|vertical"
  • 设置右对齐

      android:layout_gravity="right"
  • 当竖直布局时,只能左右对齐和水平居中,顶部底部对齐竖直居中无效

  • 当水平布局时,只能顶部底部对齐和竖直居中

  • 使用match_parent时注意不要把其他组件顶出去

  • 线性布局非常重要的一个属性:权重

      android:layout_weight="1"
  • 权重设置的是按比例分配剩余的空间

帧布局

FrameLayout
  • 默认组件都是左对齐和顶部对齐,每个组件相当于一个div

  • 可以更改对齐方式

      android:layout_gravity="bottom"
  • 不能相对于其他组件布局

表格布局

TableLayout
  • 每个节点是一行,它的每个子节点是一列

  • 表格布局中的节点可以不设置宽高,因为设置了也无效

    • 根节点的子节点宽为匹配父元素,高为包裹内容

    • 节点的子节点宽为包裹内容,高为包裹内容

    • 以上默认属性无法修改

  • 根节点中可以设置以下属性,表示让第1列拉伸填满屏幕宽度的剩余空间

      android:stretchColumns="1"

绝对布局

AbsoluteLayout
  • 直接指定组件的x、y坐标

      android:layout_x="144dp"
    
      android:layout_y="154dp"

logcat

  • 日志信息总共分为5个等级

    • verbose

    • debug

    • info

    • warn

    • error

  • 定义过滤器方便查看

  • System.out.print输出的日志级别是info,tag是System.out

  • Android提供的日志输出api

      Log.v(TAG, "宝宝巴士!");
    
      Log.d(TAG, "宝宝巴士!");
    
      Log.i(TAG, "宝宝巴士!");
    
      Log.w(TAG, "宝宝巴士!");
    
      Log.e(TAG, "宝宝巴士!");

文件读写操作

  • Ram内存:运行内存,相当于电脑的内存

  • Rom内存:内部存储空间,相当于电脑的硬盘(data/data/com.sinyee.babybus.packagename)

  • sd卡:外部存储空间,相当于电脑的移动硬盘

在内部存储空间中读写文件

小案例:用户输入账号密码,勾选“记住账号密码”,点击登录按钮,登录的同时持久化保存账号和密码

1. 定义布局
2. 完成按钮的点击事件
  • 弹土司提示用户登录成功

      Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();
3. 拿到用户输入的数据
  • 判断用户是否勾选保存账号密码

      CheckBox cb = (CheckBox) findViewById(R.id.cb);
    
      if(cb.isChecked()){
    
      }
4. 开启io流把文件写入内部存储
  • 直接开启文件输出流写数据

      //持久化保存数据
    
          File file = new File("data/data/com.itheima.rwinrom/info.txt");
    
          FileOutputStream fos = new FileOutputStream(file);
    
          fos.write((name + "##" + pass).getBytes());
    
          fos.close();
  • 读取数据前先检测文件是否存在

      if(file.exists())
  • 读取保存的数据,也是直接开文件输入流读取

      File file = new File("data/data/com.itheima.rwinrom/info.txt");
    
      FileInputStream fis = new FileInputStream(file);
    
      //把字节流转换成字符流
    
      BufferedReader br = new BufferedReader(new InputStreamReader(fis));
    
      String text = br.readLine();
    
      String[] s = text.split("##");
  • 读取到数据之后,回显至输入框

      et_name.setText(s[0]);
    
      et_pass.setText(s[1]);
  • 应用只能在自己的包名目录下创建文件,不能到别人家去创建

直接复制项目

  • 需要改动的地方:

    • 项目名字

    • 应用包名

    • R文件重新导包

使用路径api读写文件

  • getFilesDir()得到的file对象的路径是data/data/com.sinyee.babbyus.packagename/files

    • 存放在这个路径下的文件,只要你不删,它就一直在
  • getCacheDir()得到的file对象的路径是data/data/com.sinyee.babbyus.packagename/cache

    • 存放在这个路径下的文件,当内存不足时,有可能被删除
  • 系统管理应用界面的清除缓存,会清除cache文件夹下的东西,清除数据,会清除整个包名目录下的东西

在外部存储读写数据

sd卡的路径

  • sdcard:2.3之前的sd卡路径

  • mnt/sdcard:4.3之前的sd卡路径

  • storage/sdcard:4.3之后的sd卡路径

  • 最简单的打开sd卡的方式

      File file = new File("sdcard/info.txt");
  • 写sd卡需要权限

      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  • 读sd卡,在4.0之前不需要权限,4.0之后可以设置为需要

      <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
  • 使用api获得sd卡的真实路径,部分手机品牌会更改sd卡的路径

      Environment.getExternalStorageDirectory()
  • 判断sd卡是否准备就绪

      if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))

查看源代码查找获取sd卡剩余容量的代码

  • 导入Settings项目

  • 查找“可用空间”得到

       <string name="memory_available" msgid="418542433817289474">"可用空间"</string>
  • 查找"memory_available",得到

      <Preference android:key="memory_sd_avail" 
    
          style="?android:attr/preferenceInformationStyle" 
    
          android:title="@string/memory_available"
    
          android:summary="00"/>
  • 查找"memory_sd_avail",得到

      //这个字符串就是sd卡剩余容量
    
      formatSize(availableBlocks * blockSize) + readOnly
    
      //这两个参数相乘,得到sd卡以字节为单位的剩余容量
    
      availableBlocks * blockSize
  • 存储设备会被分为若干个区块,每个区块有固定的大小

  • 区块大小 * 区块数量 等于 存储设备的总大小

Linux文件的访问权限

  • 在Android中,每一个应用是一个独立的用户

  • drwxrwxrwx

  • 第1位:d表示文件夹,-表示文件

  • 第2~4位:rwx,表示这个文件的拥有者用户(owner)对该文件的权限

    • r:读

    • w:写

    • x:执行

  • 第5-7位:rwx,表示跟文件拥有者用户同组的用户(grouper)对该文件的权限

  • 第8-10位:rwx,表示其他用户组的用户(other)对该文件的权限

openFileOutput的四种模式

  • MODE_PRIVATE:-rw-rw----

  • MODE_APPEND:-rw-rw----

  • MODE_WORLD_WRITEABLE:-rw-rw--w-

  • MODE_WORLD_READABLE:-rw-rw-r--

本站文章为宝宝巴士 SD.Team原创,转载务必在明显处注明:(作者官方网站:宝宝巴士
转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4871079.html

最新文章

  1. UIButton
  2. 【转】Entity Framework技术系列之7:LINQ to Entities
  3. Linux 利器- Python 脚本编程入门(一)
  4. 【转】移动web页面支持弹性滚动的3个方案
  5. Neutron分析(2)——neutron-server启动过程分析
  6. hdu 4565 So Easy!(矩阵+快速幂)
  7. UVA 11374 Halum (差分约束系统,最短路)
  8. js画线
  9. JavaScript专业规则12条
  10. Android OpenGL ES(十)绘制三角形Triangle .
  11. 一个门外汉的理解 ~ Faster R-CNN
  12. machine learning 之 Anomaly detection
  13. selenium+python自动化测试,上传文件怎样实现
  14. #学习笔记#JSP数据交互
  15. 20135316王剑桥Linux内核学习记笔记第七周
  16. SpringBoot 优化内嵌的Tomcat
  17. 力扣(LeetCode)832. 翻转图像
  18. Oracle 除数为0的处理(decode)
  19. String转Date的类型转换器
  20. 星文快投v2全新升级

热门文章

  1. The Preliminary Contest for ICPC Asia Xuzhou 2019 徐州网络赛 K题 center
  2. UVA-2【NOI2014】起床困难综合症
  3. 编译警告:warning: operation on ‘i’ may be undefined
  4. 内存迟迟下不去,可能你就差一个GC.Collect
  5. IDEA2020版使用
  6. github使用命令
  7. 使用JDBC连接oracle数据库
  8. Dynamics 365 基于 Sql Server 2017 安装 报表 问题
  9. c++(qt)程序员微信群
  10. JAVA知识总结(三):继承和访问修饰符