Android开发有一段事件了,是时候整理了,网上有很多好的博客整理的比较好,我顺便就抄写下来,也算是对自己的巩固吧。
res是Android项目工程中存放各类的目录,主要包括布局、图形与配置等等。res的子目录主要有:
anim : 存放动画的描述文件
drawable : 存放各类图形的描述文件,包括drawable的描述文件,以及三种图片格式:png(推荐)、jpg(支持)、gif(不推荐,因为ImageView只显示gif的第一帧)。以drawable打头的有好几个目录,分别存放不同分辨率的图片,这些目录的区别详见
layout : 存放页面的布局文件,主要在Acitivity、Fragment以及部分自定义控件中使用
menu : 存放菜单的布局文件
raw : 存放原始格式的文件,一般是二进制的流文件,比如音频文件、视频文件等等
values : 存放各类参数的配置文件,具体的配置文件说明如下
——arrays.xml : 存放各类数组的定义文件,字符串数组的根节点为string-array,整型数组的根节点为integer-array
——booleans.xml : 存放布尔类型的定义文件,根节点为resources,元素节点为bool
——attrs.xml : 存放自定义控件的属性信息,根节点为resources,元素节点为declare-styleable——attr
——colors.xml : 存放颜色的定义文件,根节点为resources,元素节点为color
——dimens.xml : 存放像素的定义文件,根节点为resources,元素节点为dimen
——ids.xml : 存放控件id的定义文件,根节点为resources,元素节点为item,type为id
——integers.xml : 存放整数类型的定义文件,根节点为resources,元素节点为integer
——strings.xml : 存放字符串类型的定义文件,根节点为resources,元素节点为string
——styles.xml : 存放控件风格的定义文件,根节点为resources,元素节点为style——item
xml : 存放其他的xml文件,比如说存放SearchView的searchable.xml属性定义文件
其余目录下面的配置文件,一般需要在代码中解析数据结构,比如说图像、字符串、整型数、二进制流等等。具体的代码调用方式如下:
drawable : 一般使用getResources().getDrawable(R.drawable.example);,gif文件使用getResources().getMovie(R.drawable.example);
raw : getResources().openRawResource(R.raw.example);
values :
——arrays.xml : 解析字符串数组使用getResources().getStringArray(R.array.city);,解析整型数组使用getResources().getIntArray(R.array.code);
——attrs.xml : 代码中不解析该文件的数据结构,在自定义控件的构造函数中通过如下方式使用:TypedArray attrArray=getContext().obtainStyledAttributes( attrs, R.styleable.example);
——booleans.xml : getResources().getBoolean(R.bool.example);
——colors.xml : getResources().getColor(R.color.example);
——dimens.xml : getResources().getDimension(R.dimen.example);
——ids.xml : 代码中不使用该文件配置,在布局文件中使用为:android:id=”@id/…”(注意与一般情况相比去掉了加号)
——integers.xml : getResources().getInteger(R.integer.example);
——strings.xml : getResources().getString(R.string.example);
——styles.xml : 代码中不解析该文件的数据结构,布局文件的使用在控件内部加上style属性:style=”@style/example”
xml : getResources().getXml(R.xml.example);
assets目录用于存放应用程序的资产文件,该目录下的文件不会被系统编译,所以无法通过R.*.*这种方式来访问。Android专门为assets目录提供了一个工具类AssetManager,通过该工具,我们能够以字节流方式打开assets下的文件,并将字节流转换为文本或者图像。
ssetManager提供了如下方法用于处理assets:
1、 String[] list(String path);
列出该目录下的下级文件和文件夹名称
2、 InputStream open(String fileName);
以顺序读取模式打开文件,默认模式为ACCESS_STREAMING
3、 InputStream open(String fileName, int accessMode);
以指定模式打开文件。读取模式有以下几种:
ACCESS_UNKNOWN : 未指定具体的读取模式
ACCESS_RANDOM : 随机读取
ACCESS_STREAMING : 顺序读取
ACCESS_BUFFER : 缓存读取
4、 void close()
关闭AssetManager实例
集合(Set/HashSet)
集合中的元素是没有顺序的,而且不可以重复。这意味着,集合只能遍历而无法通过索引访问指定元素,并且如果重复添加相同值将不会增大集合。因为Set只是接口,所以实际用的是它的一个派生类HashSet。
集合的常用方法如下:
add : 添加元素
clear : 清空容器
contains : 判断容器中是否存在该元素
iterator : 获取第一个元素的指针
isEmpty : 判断容器是否为空
remove : 删除元素
size : 获取容器大小
队列(ArrayList)
队列与集合恰恰相反,队列中的元素是有顺序的,而且允许重复,所以队列可以使用索引来访问指定元素(类似数组的下标)。
队列的常用方法包括上面集合列出的几个,下面列出有变更或者添加的方法:
add : 提供了两个方法。默认在队列末尾添加元素;如果指定了索引位置,则在指定位置末尾添加元素
get : 获取指定位置的元素
indexOf : 获取指定元素的第一个索引位置
lastIndexOf : 获取指定元素的最后一个索引位置
remove : 提供了两个方法。除了删除元素之外,还可以删除指定位置的元素
set : 替换指定位置的元素
subList : 截取从开始位置到结束位置之间的子队列
映射(Map/HashMap)
映射保存的是键值对(即key—value)的映射关系,一个映射中不能包含相同的key,每个key只能映射一个value。但Map只是接口,实际中常用的是它的一个派生类HashMap。类似的,队列、链表、向量都是派生自List接口。
映射的常用方法如下:
clear : 清空容器
containsKey : 判断容器中是否存在该键(key)的元素
containsValue : 判断容器中是否存在该值(value)的元素
get : 根据指定键获得元素的值
isEmpty : 判断容器是否为空
keySet : 获取容器中键的集合
put : 设置键值对的映射关系。如原来没有该键,则添加元素;如果原来存在该键,则替换元素
remove : 删除指定键对应的元素
size : 获取容器的大小
values : 获取容器中值的集合
Application组件
Application是比Activity高级的组件,它的生命周期覆盖了APP运行的全过程;而Activity页面的生命周期很短暂,只要进入别的页面,原页面就被停止或者销毁;因此我们可以在Application中保存全局变量。在打开App时,系统会先初始化Application,然后才进入到开始的Activity页面。通常我们不需要指定一个Application,这时系统会自动帮我们创建,如果需要创建自己的Application,创建一个派生自Application的类,并在manifest的application标签中注册就好了。
SharedPreferences存储数据
下面是Properties的常用方法:
load : 从属性文件中加载属性对象
store : 把属性对象保存到属性文件
getProperty : 获取属性值
setProperty : 设置属性值
loadFromXML : 从XML格式的属性文件中加载属性对象
storeToXML : 把属性对象保存到XML格式的属性文件
SQLite
Realm应用背景
File类
File类是java中的文件操作工具类,它的常用方法如下:
File构造函数 : 根据文件路径构造File对象
delete : 删除文件
exists : 判断文件是否存在
getName : 获取文件的文件名
getPath : 获取文件的目录路径
getParent : 获取上级目录路径
isDirectory : 判断是否为目录/文件夹
isFile : 判断是否为文件
length : 获取该文件的大小
list : 列出该目录下的所有文件(夹),返回String数组
listFiles : 列出该目录下的所有文件(夹),返回File数组
mkdirs : 创建目录/文件夹
renameTo : 重命名文件,其实就是移动文件到指定目录
Environment类
Environment类是Android中获取各种目录信息的工具,主要方法如下:
getDataDirectory : 获得系统data目录的路径
getDownloadCacheDirectory : 获得下载缓存目录的路径
getExternalStorageState : 获得外部存储的状态
SD卡操作
下载请求
要想使用下载功能,首先得构建一个下载请求,说明从哪里下载、下载参数为何、下载的文件保存到哪里等等。这个下载请求便是DownloadManager的子类Request,下面是该类的常用方法
Request构造函数 : 指定从哪个网络地址下载文件。
Request.setAllowedNetworkTypes : 指定允许进行下载的网络类型。Request.NETWORK_WIFI表示wifi环境(推荐),Request.NETWORK_MOBILE表示数据连接环境(不推荐),Request.NETWORK_BLUETOOTH表示蓝牙环境。
Request.setDestinationInExternalFilesDir : 设置下载文件在本地的保存路径。
Request.addRequestHeader : 给HTTP请求添加头部参数。
Request.setMimeType : 设置下载文件的媒体类型。
Request.setVisibleInDownloadsUi : 设置下载页面是否可见。
下载操作
构建下载请求完毕,然后才能进行下载的相关操作。下面是DownloadManager常用的下载方法:
enqueue : 将下载请求加入到任务队列中,即开始下载任务。该方法返回本次下载任务的编号。
remove : 取消指定编号的下载任务。
restartDownload : 重新下载指定编号的任务。
openDownloadedFile : 打开下载完成的文件。
getMimeTypeForDownloadedFile : 获取下载完成的文件的媒体类型。