安卓四大组件:Activity,Service,BroadcastReceiver,ContentProvider
安卓允许把应用中用到的各种资源(字符串资源、颜色资源、数组资源、菜单资源等)集中放到/res/目录中定义,应用程序直接使用这些资源中定义的值。可通过R资源清单类访问的资源。
assets目录也用于存放资源(应用无法直接访问的原生资源,应用程序需要通过AssetManager以二进制流的形式读取资源)。不可通过R资源清单类访问的资源。
目录 | 存放的资源 |
/res/animator/ | 定义属性动画的XML文件 |
/res/anim/ | 定义补间动画的XML文件 |
/res/color | 定义不同状态下颜色列表的XML文件 |
/res/drawable/ | 适应不同屏幕分辨率的各种位图文件,也可能编译成各种Drawable对象的XML文件(BitmapDrawable对象、NinePatchDrawable对象、StateListDrawable对象、AnimationDrawable对象、Drawable的其他各种子类的对象) |
/res/mipmap | 主要存放适应不同分辨率的应用程序图标,以及其它系统保留的Drawable资源 |
/res/layout/ | 各种用户界面的布局文件 |
/res/menu/ | 为应用程序定义各种菜单的资源,包括选项菜单、子菜单、上下文菜单资源 |
/res/raw/ | 任意类型的原资源(音频、视频等) |
/res/values/ | 各种简单值的XML文件。(字符串值、整数值、颜色值、数组等) |
/res/xml/ | 任意的原生XML文件(使用Resources.getXML()方法进行访问) |
java或kotlin程序为安卓应用定义四大组件。XML文件为安卓应用定义各种资源。
1.在源程序中使用资源清单项
Android SDK会在编译应用时在R类中为/RES/目录下所有资源创建索引项,采用R类来访问资源。
[<package_name>.].R.<resource_type>.<resource_name>
- package_name:指定R类所在包(使用全限定类名)。在源程序中导入R类所在包,可以省略包名。
- resource_type:R类中代表不同资源类型的子类。
- resource_name:指定资源的名称。
2.在源代码中访问实际资源
使用Resources类。
- getXxx(int id):根据资源清单ID来获取实际资源。
- getAssets():获取访问/assets/目录下资源的AssetManager对象。
示范代码:
//直接调用Activity的getResources()方法来获取Resources对象
Resources res = getResources();
//获取字符串资源
String a = res.getText(R.string.main_title);
//获取Drawable资源
Drawable logo =res.getDrawable(R.drawable.logo);
//获取数组资源
int[] arr = res.getIntArray(R.array.books);
3.在XML文件中使用资源
@[<package_name>:]<resource_type>/<resource_name>
类似的不写。
字符串、颜色、尺寸资源对应的XML文件都位于/res/values/目录下。
颜色
RGB-》R(RED红),G(GREEN绿),B(BLUE蓝)三原色以及一个透明度(Alpha)四个值来表示颜色值。颜色值总是以#井号开头。
安卓颜色值支持四种常见形式:
- #RGB(0~f这16级颜色)
- #ARGB(0~f这16级颜色)
- #RRGGBB(00~ff这256级颜色)
- #AARRGGBB(00~ff这256级颜色)
.StateListDrawable资源
用于组织多个Drawable对象。当使用StateListDrawable作为目标组件的背景、前景图片时,StateListDrawable对象所显示的Drawable对象会随目标组件状态的更改而自动切换。
LayerDrawable资源
与StateListDrawable类型,LayerDrawable包含一个Drawable数组,系统会按照这些Drawable对象的数组顺序来绘制他们,索引最大的Drawable对象将被绘制在最上面。
ShapeDrawable资源
用于定义一个基本的几何图形。
ClipDrawable资源
代表从其他位图上截取的一个“图片资源”。
AnimationDrawable资源
代表一个动画。
属性动画(Property Animation)资源
样式资源(略)
主题资源
不用能作用与单个的View组件,对整个应用的所有Activity起作用或特定的Activity起作用。
国际化资源
为values、drawable目录添加几个不同的语言国家版本
values-语言代码-r国家代码
drawable-语言代码-r国家代码
自适应不同屏幕的资源
为不同屏幕尺寸、不同屏幕分辨率提供相应的布局资源、Drawable资源。