在Android中,大量的數(shù)據(jù)和配置信息以資源的方式存在,理解資源對進行Android應用開發(fā)具有十分重要的意義。
對于字符串資源,通常應放置在res/values/目錄下,以XML文件保存。
對于音頻、視頻資源,通常應放置在res/raw目錄下。
對于應用布局信息,通常應放置在res/layout目錄下,以XML文件保存。
對于圖像資源,通常應放置在res/drawable目錄下。如果需要對圖像進行配置,則可以利用XML文件進行配置。
對于菜單資源,通常應放置在res/menu目錄下。下面是一個包含了子菜單的菜單的資源文件實現(xiàn):
< menu xmlns:android="http://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);
}
執(zhí)行菜單選擇的過程如下:
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;
}
}
如果是動態(tài)菜單,在菜單顯示前,可以在onPrepareOptionsMenu(Menu menu)預先做一判斷。當然也可以直接通過代碼實現(xiàn)菜單,方法如下:
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;
}
對于動態(tài)效果資源,通常應放置在res/anim目錄下。下面是一個動態(tài)效果的實現(xiàn):
< set xmlns:android="http://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在示例中提供了數(shù)十個動態(tài)效果的示例,開發(fā)者可以直接復制即可在自己的代碼中引用。
對于< key,value>數(shù)據(jù)和app widget提供器等資源,通常放置在res/xml目錄下。另一個比較常見的放置在res/xml目錄下的資源文件是配置文件。下面是Android示例中的一個配置文件:
< PreferenceScreen
xmlns:android="http://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的資源文件內(nèi)容豐富,尤其是布局文件,往往需要豐富的經(jīng)驗才能寫出考慮周詳?shù)拇a。