Android应用的源代码分为3类:
xmlJava代码资源文件资源文件主要是提高代码的可维护性资源文件有字符串资源、颜色资源、数组资源、菜单资源等都集中在放在res中assets也存放部分资源,需要通过AssetManager以二进制流的形式访问
一、 应用资源概述
assert:无法通过R资源菜单访问res:可以通过R资源菜单访问
1. 资源的类型和存储方式
P290 表6.1
2. 使用资源
Java代码中使用资源清单项
[package_name].R.[resource_type].[resource_name]在Java代码中访问实际资源
getXxx(int id)getAsserts()在xml文件中使用资源
直接引用资源
二、字符串、颜色、尺寸资源
1. 颜色值的定义
Alpha-Red-Green-Blue,Alpha值可以省略
2. 定义字符串、颜色、尺寸资源文件
字符串资源文件位于values目录下,根元素为resource…,该元素里每个子元素string定义一个字符串常量,name值指定常量的名称,标签之间的内容代表字符串值
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">字符串、颜色、尺寸资源
</string>
<string name="c1">F00
</string>
<string name="c2">0F0
</string>
<string name="c3">00F
</string>
<string name="c4">0FF
</string>
<string name="c5">F0F
</string>
<string name="c6">FF0
</string>
<string name="c7">07F
</string>
<string name="c8">70F
</string>
<string name="c9">F70
</string>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="c1">#F00
</color>
<color name="c2">#0F0
</color>
<color name="c3">#00F
</color>
<color name="c4">#0FF
</color>
<color name="c5">#F0F
</color>
<color name="c6">#FF0
</color>
<color name="c7">#07F
</color>
<color name="c8">#70F
</color>
<color name="c9">#F70
</color>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="spacing">8dp
</dimen>
<dimen name="cell_width">60dp
</dimen>
<dimen name="cell_height">66dp
</dimen>
<dimen name="title_font_size">18sp
</dimen>
</resources>
3. 使用字符串、颜色、尺寸资源
@[resource_type]/[resource_name]R.[resource_type]/[resource_name]
三、Array资源
位于values目录下的arrays.xml中,根元素为resource,该元素内包含如下三种子元素
array…string-array…interger-array…访问资源:
R.array.array_name@array/array_nameResource 提供的方法
String[] getStringArray(int id)int[] getIntArray(int id)TypedArray obtain TypedArray(int id)
四、使用Drawable资源
1. 图片资源
直接把png、jpg、gif、放在drawable中
2. StateListDrawable资源
主要用来组织多个Drawable对象,随状态改变而改变根元素为selector,子元素为item
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true"
android:color="#f44"/>
<item android:state_focused="false"
android:color="#ccf"/>
</selector>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@drawable/my_image"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@drawable/my_image"/>
</LinearLayout>
3. LayerDrawable 资源
Drawable对象的数组顺序来绘制,索引最大的会被绘制在最上面根元素为layer-list…,子元素为item
4. ShapeDrawable 资源
主要用来绘制几何图形,根元素为shape
rectangleovalringline
5. ClipDrawable资源
主要从其他位图上截取一个图片片段,根元素为clip
drawable:指定截取的源Drawable对象clipOrientation:指定截取的方向,水平截取或垂直截取gravity:指定截取时的对齐方式setLevel()控制截取图片的部分
6. AnimationDrawable资源
可以用在补间动画方面能满足View进行移动、缩放、旋转和淡入淡出的操作,超出此范围要用属性动画定义补间动画以set作为根节点
alphascaletranslaterotate补间动画只需要设置开始状态和结束状态,android自动调用动画效果interpolator属性用在调节动画速度方面
linear_interpolator:匀速变换accelerate_interpolator:加速变换decelerate_interpolator:减速变换
五、属性动画资源
< set/…>是个父元素,包含着
< objectAnimator…/>:用于定义ObjectAnimator动画< animator…/>:用于定义ValueAnimator动画
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:propertyName="backgroundColor"
android:duration="3000"
android:valueFrom="#FF8080"
android:valueTo="#8080FF"
android:repeatCount="infinite"
android:repeatMode="reverse"
android:valueType="intType">
</objectAnimator>
public class MyAnimationView extends View
{
public MyAnimationView(Context context)
{
super(context);
ObjectAnimator colorAnim = (ObjectAnimator) AnimatorInflater
.loadAnimator(MainActivity.
this, R.animator.color_anim);
colorAnim.setEvaluator(
new ArgbEvaluator());
colorAnim.setTarget(
this);
colorAnim.start();
}
}
六、使用原始xml资源
1.定义原始xml资源
获取方式:
xml中: xml/file_name
Java代码中:
R.xml.filename
XmlResourceParser getXml(int id) InputStream openRawResource(int id)
七、自适应不同屏幕资源
转载请注明原文地址: https://ju.6miu.com/read-659600.html