本周学习内容如下
1.熟悉Android四种数据存储方式
2.熟悉Android项目中各种资源文件的规范使用
3.熟悉Animation与Animator动画
四种数据存储方式
键值对存储-SharePreference
除SQLite数据库外,另一种常用的数据存储方式,其本质就是一个xml文件,常用于存储较简单的参数设置
数据库存储-SQLite
SQLite是一个轻量级的数据库,支持基本SQL语法,是常被采用的一种数据存储方式。Android为此数据库提供了一个名为SQLiteDatabase的类,封装了一些操作数据库的API。
APP间共享存储-ContentProvider
Android系统中能实现所有应用程序共享的一种数据存储方式,由于数据通常在各应用间的是互相私密的,所以此存储方式较少使用,但是其又是必不可少的一种存储方式。例如音频,视频,图片和通讯录,一般都可以采用此种方式进行存储。每个Content Provider都会对外提供一个公共的URI(包装成Uri对象),如果应用程序有数据需要共享时,就需要使用Content Provider为这些数据定义一个URI,然后其他的应用程序就通过Content Provider传入这个URI来对数据进行操作。
文件存储-File
即常说的文件(I/O)存储方法,常用语存储大数量的数据,但是缺点是更新数据将是一件困难的事情
资源文件规范
res/drawable
通常用来存放图片资源。如logo等。
res/layout
存放布局文件
res/values
- string.xml 存放在应用中多次使用的字符串
- arrays.xml 存放数组,有字符串和整数两种
- color.xml 存放组件多次使用的颜色列表
- styles.xml 存放Android组件中的样式
- dimens.xml 存放用于适配的尺寸 还可以用于百分比适配 参考
文件夹含义:
values-v11
——-API 11+代表android 3.0 +,意思是在API11设备上,该目录下的dimens.xml代替res/values/dimens.xml
values-480x320、values-800x480
等 ————意思是在不同分辨率下,该目录下的dimens.xml代替res/values/dimens.xml
res/xml
存放xml文件,与之前所说的资源类似,存放在其中的资源文件会被编译为二进制数据而存入安装包内。通过R类读取xml文件。
res/raw
存放文件。此目录下文件与之前的资源不同,他们不会被编译为二进制文件.而是以文件形式存放起来。通过R类读取。
assets
可以在此创建子目录并存放不同文件。不会被编译入二进制,而是以目录/文件存放。通过文件名读取。
Animation与Animator
Animation(补间动画)
Animation框架定义了透明度,旋转,缩放和位移几种常见的动画,而且控制的是一个整个View动画,实现原理是每次绘制视图时View所在的ViewGroup中的drawChild函数获取该View的Animation的Transformation值,然后调用canvas.concat(transformToApply.getMatrix()),通过矩阵运算完成动画帧,如果动画没有完成,继续调用invalidate()函数,启动下次绘制来驱动动画,动画过程中的帧之间间隙时间是绘制函数所消耗的时间,可能会导致动画消耗比较多的CPU资源。
动画类型
效果 | Xml | Java |
---|---|---|
透明渐变 | alph | AlphaAnimation |
尺寸渐变 | scale | ScaleAnimation |
位置画面转换 | translate | TranslateAnimation |
旋转画面转换 | rotate | RotateAnimation |
使用Animation
- 创建一个AnimationSet对象(Animation子类);
- 增加需要创建相应的Animation对象;
- 更加项目的需求,为Animation对象设置相应的数据;
- 将Animatin对象添加到AnimationSet对象当中;
- 使用控件对象开始执行AnimationSet。
Animator(属性动画)
属性动画是Android3.0之后引进的,它更改的是动画的实际属性,在Tween Animation(补间动画)中,其改变的是View的绘制效果,。而在Property Animator(属性动画)中,改变的是动画的实际属性,如Button的缩放,Button的位置和大小属性值都会发生改变。而且Property Animation不止可以应用于View,还可以应用于任何对象,Property Animation只是表示一个值在一段时间内的改变,当值改变时要做什么事情完全是你自己决定的。
优点
适用性
由于 Animator 使用了反射机制导致其效率偏低,但是这也带来了他适用的对象范围的增加, Animation 仅对 View 这一种对象有用,但是 Animator 可以设置任意对象的属性,使其在某段时间内进行变化。
使用效果
Animator 进行位移变换,点击监听会随着动画效果发生相应改变,即使你正处在动画过程中,你也可以去点击按钮得到你想要的效果。