在Android中,大量的数据和配置信息以资源的方式存在,理解资源对进行Android应用开发具有十分重要的意义。
对于字符串资源,通常应放置在res/values/目录下,以XML文件保存。
对于音频、视频资源,通常应放置在res/raw目录下。
对于应用布局信息,通常应放置在res/layout目录下,以XML文件保存。
对于图像资源,通常应放置在res/drawable目录下。如果需要对图像进行配置,则可以利用XML文件进行配置。
对于菜单资源,通常应放置在res/menu目录下。下面是一个包含了子菜单的菜单的资源文件实现:
< menu xmlns:android="//schemas.android.com/apk/res/android">
< item android:title="Normal 1" />
< item android:id="@+id/submenu"android:title="Emotions">
< menu>
< item android:id="@+id/happy"android:title="Happy"android:icon="@drawable/stat_happy" />
< item android:id="@+id/neutral"android:title="Neutral"android:icon="@drawable/stat_neutral" />
< item android:id="@+id/sad"android:title="Sad"android:icon="@drawable/stat_sad" />
< /menu>
< /item>
< item android:title="Normal 2" />
< /menu>
下面是一个选项菜单加载的过程:
public boolean onCreateOptionsMenu(Menu menu)
{
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.browser, menu);
}
执行菜单选择的过程如下:
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id. happy:
……
return true;
case R.id. neutral:
……
return true;
Case R.id. sad:
……
return true;
default:
return false;
}
}
如果是动态菜单,在菜单显示前,可以在onPrepareOptionsMenu(Menu menu)预先做一判断。当然也可以直接通过代码实现菜单,方法如下:
public boolean onCreateOptionsMenu(Menu menu)
{
menu.add(0, DISPLAY_MODE_LAUNCH, 0, R.string.quick_launch_display_mode_applications)
.setIcon(com.android.internal.R.drawable.ic_menu_archive);
menu.add(0, DISPLAY_MODE_SHORTCUT, 0, R.string.quick_launch_display_mode_shortcuts)
.setIcon(com.android.internal.R.drawable.ic_menu_goto);
return true;
}
对于动态效果资源,通常应放置在res/anim目录下。下面是一个动态效果的实现:
< set xmlns:android="//schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator">
< scale android:fromXScale="2.0" android:toXScale="1.0"
android:fromYScale="2.0" android:toYScale="1.0"
android:pivotX="50%p" android:pivotY="50%p"
android:duration="@android:integer/config_mediumAnimTime" />
< /set>
动画效果常用的场景不多,在Activity加载或者退出时,会用到动画效果,另一个比较常用的场景是ViewSwitcher\ ViewFlipper。下面是ViewSwitcher设置动画效果的方法:
mViewSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,R.anim.push_up_in));
mViewSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,R.anim.push_up_out));
Android在示例中提供了数十个动态效果的示例,开发者可以直接复制即可在自己的代码中引用。
对于< key,value>数据和app widget提供器等资源,通常放置在res/xml目录下。另一个比较常见的放置在res/xml目录下的资源文件是配置文件。下面是Android示例中的一个配置文件:
< PreferenceScreen
xmlns:android="//schemas.android.com/apk/res/android">
< CheckBoxPreference
android:key="default_toggle"
android:defaultValue="true"
android:title="@string/title_checkbox_preference"
android:summary="@string/summary_checkbox_preference" />
< EditTextPreference
android:key="default_edittext"
android:defaultValue="@string/default_value_edittext_preference"
android:title="@string/title_edittext_preference"
android:summary="@string/summary_edittext_preference"
android:dialogTitle="@string/dialog_title_edittext_preference" />
< ListPreference
android:key="default_list"
android:defaultValue="@string/default_value_list_preference"
android:title="@string/title_list_preference"
android:summary="@string/summary_list_preference"
android:entries="@array/entries_list_preference"
android:entryValues="@array/entryvalues_list_preference"
android:dialogTitle="@string/dialog_title_list_preference" />
< /PreferenceScreen>
在代码中加载配置文件的方法如下:
public void onCreate()
{
PreferenceManager.setDefaultValues(this, R.xml.default_values, false);
}
Android的资源文件内容丰富,尤其是布局文件,往往需要丰富的经验才能写出考虑周详的代码。