Android资源访问
一、资源访问:【掌握】
(一)、概念:
Android中的资源是指可以在代码中使用的外部文件,这些文件作为应用程序的一部分,被编译到应用程序中。在项目中,这些资源被保存到Android应用的res目录下。
(二)、资源分类:
id;
字符串资源文件;
颜色资源
尺寸资源文件
布局资源
数组资源
样式和主题资源
菜单资源
已编译的任意XML资源文件【重要】: res/xml
未编译的原始资源文件: res/raw
图像(Drawable)资源
普通图像资源
xml图像资源:bitmap
图层(Layer)资源:layer-list , item
图像选择器:图像状态(State)资源:selector , item
图像级别(Level)资源:level-list , item
淡入淡出(CrossFade)资源:transition , item(只支持两个)
外形(Shape)资源:shape(shape , gradient , padding ,corners , stroke)
动画资源
逐帧动画: res/anim animation-list , item
补间动画: res/anim
透明度补间动画 alpha
缩放补间动画 scale
旋转补间动画 rotate
移动补间动画 translate
3、属性动画:res/animator
【备注:】资源编译器会编译除了raw资源以外的所有资源,并将它们全部放到最终的.apk文件中。apk(Android Package)包含Android应用程序的代码和资源。
13、attr资源:自定义View
(三)、各种资源文件的xml格式:
1、字符串资源文件:
示例代码:
红色
绿色
蓝色
Java文件中获取方式:getResources().getString(R.string.red);
2、颜色资源文件:
示例代码:
#f00
#0f0
#00f
在需要调用该颜色的地方写法是:android:background="@color/blue"
Java文件中获取方式:getResources().getColor(R.color.blue);
3、尺寸资源文件:
示例代码:
20dp
10dp
Java文件中获取方式:getResources().getDimension(R.dimen.title);
4、数组资源文件:
Android中,不推荐将数组直接定义在java文件中,而是使用数组资源文件来定义数组。
定义在res下values目录下:arrays.xml文件中。格式如下:
根元素:
子元素:可以有三种。
下级子元素:
示例代码:
- 主屏模式
- wifi设置
- 蓝牙设置
- 网络设置
- More
Java文件中获取方式:getResources().getStringArray(R.array.choiceItems);
【备注:】如果是int型数组,则格式如下:
- 20
- 30
- 40
- 50
Java文件中获取方式:getResources().getIntArray(R.array.age);
【备注:】如果是资源数组资源,则格式如下:
- @drawable/home
- @drawable/setting
- @drawable/logout
- 首页
- 设置
- 退出
Java文件中获取方式:
TypedArray arrIcons = getResources().obtainTypedArray(R.array.icons);
Drawable drawable = arrIcons.getDrawable(0);
5、原始XML资源【重要】
位置:res/xml目录下;
定义格式:格式良好的,没有特殊要求的普通xml文件;
Java文件中获取方式:getResources().getXml(R.xml.文件名称);
解析xml的核心代码:
// 从资源文件夹中读取原始xml资源文件
XmlResourceParser pullParser = getResources().getXml(R.xml.citylist);
//将读取xml资源文件返回的XmlResourceParser 对象继续解析,获取到xml节点中需要的数据。
//备注:XmlResourceParser 类是XmlPullParser的子类
public List
6、原生文件资源: raw
【备注:】raw目录下主要放置的资源有音频、视频等文件。raw目录下的文件会在R.java中被注册。
如何访问raw目录下的文件?
InputStream is = getResources().openRawResource(R.raw.文件名);
7、图像资源:
A、普通图像资源:
Java文件中获取方式:getResources().getDrawable(R.drawable.imagename);
int resId = getResources().getIdentifier(imgName, "drawable", this.getPackageName());
view.getResources().getResourceName(resid)
int resId = context.getResources().getIdentifier("图片名称", "drawable", context.getPackageName());
imageView_main_showpic.setImageResource(resId);
B、xml图像资源:bitmap
C、图层(Layer)资源:layer-list
-
-
D、图像状态(State)资源:selector
-
-
-
E、图像级别(Level)资源:level-list
//UI代码:
-
-
//java代码:
publicclass LevelActivity extends Activity {
private ImageView imageview_lamp;
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_level);
imageview_lamp = (ImageView) findViewById(R.id.imageview_lamp);
}
publicvoid clickButton(View view) {
switch (view.getId()) {
case R.id.button_level_lampoff:
imageview_lamp.setImageLevel(9);
break;
case R.id.button_level_lampon:
imageview_lamp.setImageLevel(15);
break;
default:
break;
}
}
}
F、淡入淡出(CrossFade)资源:transition
//java代码:
publicclass CrossfadeActivity extends Activity {
private ImageView imageview_lamp;
private TransitionDrawable drawable = null;
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_crossfade);
imageview_lamp = (ImageView) findViewById(R.id.imageview_lamp);
drawable = (TransitionDrawable) imageview_lamp.getDrawable();
}
publicvoid clickButton(View view) {
switch (view.getId()) {
case R.id.button_level_lampon:
drawable.startTransition(3000);
break;
case R.id.button_level_lampoff:
drawable.reverseTransition(3000);
break;
default:
break;
}
}
}
G、外形(Shape)资源:shape