Android中的资源访问 Android中的资源是指非代码部分,指外部文件。
assets中保存的一般是原生的文件,例如MP3文件,Android程序不能直接访问,必须通过AssetManager类以二进制流的形式来读取。
res中的资源可以通过R资源类直接访问。
R类是自动生成的,在该类中根据不同的资源类型生成了相应的内部类,该类包含了系统中使用到的所有资源文件的标识。
1.在代码中使用资源文件 在代码中访问资源文件,是通过R类中定义的资源文件类型和资源文件名称来访问的。
具体格式为:
R.资源文件类型.资源文件名称
另外,除了访问用户自定义的资源文件,还可以访问系统中的资源文件。
访问系统中的资源文件的格式为:
android.R. 资源文件类型.资源文件名称
2.在其他资源文件中引用资源文件 经常会在布局文件中引用图片、颜色资源、字符串资源和尺寸资源。
在其他资源中引用资源的一般格式是:
@[包名称:]资源类型/资源名称
使用颜色资源 颜色值定义的开始时一个#号,后面是Alpha-RGB的格式。
例如:
#RGB
#ARGB
#RRGGBB
#AARRGGBB
引用资源格式:
Java代码中:R.color.color_name
XML文件中:@[package:]color/color_name
使用时在res\values\目录下,定义一个colors.xml文件,里面存放颜色名字和颜色值的键值对。
如:
#f00
#0000ff
其他资源如字符串、尺寸都是类似的方法。
使用字符串资源 创建字符串资源文件strings.xml.里面内容也是键值对
在Java代码中引用字符串资源R.string.string_name
可如下取得:
String str = getString(R.string.string_name).toString();
在xml文件中引用字符串资源:@[package:]string/string_name
使用尺寸资源 尺寸资源被定义在res\values\dimens.xml文件中。
Android中支持的尺寸单位:
单位表示
|
单位名称
|
说明
|
dip
|
设备独立像素
|
不同设备不同的显示效果,dip与屏幕密度有关
|
px
|
像素
|
屏幕上的真实像素表示,不同设备不同显示屏显示效果相同
|
in
|
英尺
|
基于屏幕的物理尺寸
|
mm
|
毫米
|
基于屏幕的物理尺寸
|
pt
|
点(磅)
|
英尺的1/72
|
dp
|
和密度无关的像素
|
相对屏幕物理密度的抽象单位
|
sp
|
和精度无关的像素
|
和dp类似,与刻度无关的像素,主要处理字体大小
|
参照ディメンション リソース:
Java コード内: R.dimen.dimen_name
XML ファイル内: @[package:]dimen/dimen_name
使用オリジナルの XML リソース XML ファイルはプロジェクトの resxml ディレクトリに定義されており、Resources.getXML() メソッドを通じてアクセスされます。
元の XML ファイルを取得するということは、getResources().getXml() を通じて元の XML ファイルを取得し、このオブジェクトを使用してドキュメントの先頭か末尾かを判断することです。特定のタグの先頭または末尾、属性を取得するいくつかのメソッドを通じて XML ファイルを走査することにより、XML ファイルのコンテンツにアクセスします。
ドローアブル リソースを使用する ドローアブル リソースは、主に画面の描画に使用され、Resources.getDrawable() メソッドを通じて取得されるいくつかの画像または色のリソースです。
ドローアブル リソースは、ビットマップ ファイル、カラー ドローアブル、ナイン パッチ イメージの 3 つのカテゴリに分類されます。
Android でサポートされているビットマップ ファイルには、png、jpg、gif が含まれます。
ビットマップ リソースを参照する形式:
Java コードの場合: R.drawable.file_name
XML ファイルの場合: @[package:]drawable/file_name
レイアウトを使用する (レイアウト) リソース レイアウト リソースは、Web 上の HTML ページと同様に、XML ファイルで画面上のコンポーネントのレイアウトを定義する、Android で最も一般的に使用されるリソースです。
レイアウト ファイルは reslayout にあり、任意の名前が付けられます。 Android は、LayoutInflater クラスを通じて XML ファイル内のコンポーネントをビジュアル ビュー コンポーネントに解析します。
アクティビティで、Activity.setContentView() メソッドを呼び出し、レイアウト ファイルを Activity インターフェイスに設定し、findViewById() メソッドを使用してレイアウト内のコンポーネントを取得します。
参照レイアウト ファイル:
Java コードの場合: R.layout.my_layout
XML ファイルの場合: @[package:]layout/my_layout
メニュー リソースの使用 ビュー コンポーネントを作成するには 2 つの方法があります。1 つはレイアウト ファイルで宣言する方法、もう 1 つはコードで作成する方法です。
Android のメニューは、オプション メニュー、コンテキスト メニュー、サブメニューに分かれており、XML ファイルで宣言および定義し、MenuInflater クラスを通じてコードで使用できます。
メニュー リソース ファイルも XML ファイルであり、プロジェクトの resmenu ディレクトリに配置されます。 R.menu.my_menu を通じて参照されます。
一般的なメニュー リソース ファイルの構造: