?? 對于每個應用程序來說,都要有一些屬于用戶自己的設置,滿足不同需求。當我們點擊menu時,如下:
?那么這樣的效果是怎么實現的呢?我只是來個簡單介紹,給自己做備忘,也是給大家點思路吧。在android的路上,我們一起努力吧。
這里我們僅說第二個圖片效果的實現,第一個圖片的效果,想必大家都會了,就是使用menu類的幾個方法就可以了。
1.PreferenceScreen 的使用。
首先要定義一下整個布局即使用xml文件夾下的preferences.xml。
代碼如下:
<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 如果擁有多個首選項,可以構建一個視圖來顯示首選項高級類別。用戶然后就可以深入到每個類別,查看和管理特 定于該組的首選項。 可以通過兩種方式來實現此目的。可以在根 PreferenceScreen中引入嵌套的 PreferenceScreen 元素, 或者可以使用 PreferenceCategory 來獲得類似的結果。 --> <PreferenceCategory android:title="@string/app_name" android:summary="Application settings"> <EditTextPreference android:key="user_name" android:defaultValue="@null" android:title="@string/preference_username_title" android:summary="@string/preference_username_summary" /> <ListPreference android:key="download_format" android:title="@string/preference_codec_title" android:summary="@string/preference_codec_summary" android:entries="@array/stream_codecs" android:entryValues="@array/stream_codecs_values" /> <ListPreference android:key="cache_option" android:title="@string/preference_cache_title" android:summary="@string/preference_cache_summary" android:entries="@array/cache_size" android:entryValues="@array/cache_size_values"/> <CheckBoxPreference android:key="wifi_only" android:defaultValue="false" android:title="@string/preference_wifi_only_title" android:summary="@string/preference_wifi_only_summary" /> <CheckBoxPreference android:key="roaming_protection" android:defaultValue="true" android:title="@string/preference_roaming_summary" android:summary="@string/preference_roaming_summary" /> </PreferenceCategory> <PreferenceCategory android:title="@string/preference_3rdparty_title" android:summary="@string/preference_3rdparty_summary"> <CheckBoxPreference android:defaultValue="false" android:key="scrobbling_enabled" android:title="@string/scrobbling_enabled"/> <ListPreference android:key="scrobbler_app" android:dependency="scrobbling_enabled" android:entries="@array/scrobbler_apps" android:title="@string/scrobbler_app" android:entryValues="@array/scrobbler_apps_values" android:summary="@string/scrobbler_app_summary"></ListPreference> </PreferenceCategory> <PreferenceCategory android:title="@string/gestures_preference_title" android:summary="@string/gestures_preference_summary"> <CheckBoxPreference android:key="gestures" android:defaultValue="true" android:title="@string/gestures_support" android:summary="@string/gestures_support_summary"/> </PreferenceCategory> <PreferenceCategory android:title="@string/preference_reset_title"> <Preference android:key="reset_firstrun" android:summary="@string/preference_firstrun_reset_summary" android:title="@string/preference_firstrun_reset_title"></Preference> </PreferenceCategory> </PreferenceScreen>
?
其中:
特性??????????????????????????????? 說明
android:key?????????????????????? 選項的名稱或鍵(比如selected_flight_sort_option)
android:title?????????????????????? 選項的標題
android:summary?????????????? 選項的簡短摘要
android:entries????????????????? 可將選項設置成列表項的文本
android:entryValues????????? 定義每個列表項的值。注意:每個列表項有一些文本和 一 個 值。 文本由
entries定義,值由entryValues定義。
android:dialogTitle???????????? 對話框的標題,在視圖顯示為模態對話框時使用
android:defaultValue????????? 項列表中選項的默認值
?
在開發文檔中這樣定義PreferenceScreen,?Represents a top-level Preference that is the root of a Preference hierarchy. 即顯示了首選項組織體系的最頂級。
?
2.PreferenceActivity
A PreferenceActivity points to an instance of this class to show the preferences. 即我們通過實例化一個繼承PreferenceActivity 的類來展示首選項,代碼如下
public class SettingsActivity extends PreferenceActivity { @Override public void onCreate(Bundle savedInstanceState)
{ requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState); //添加設置,加入引用
addPreferencesFromResource(R.xml.preferences); setContentView(R.layout.settings); }
}
?
?關于布局文件settings.xml:
?
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#000000"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/gradient_dark_purple" android:orientation="horizontal" android:gravity="center" android:minHeight="75dip"> <LinearLayout android:layout_height="wrap_content" android:minHeight="75dip" android:layout_width="fill_parent" android:orientation="horizontal" android:gravity="center_vertical" android:paddingLeft="13dip" android:paddingRight="13dip"> <ImageView android:layout_width="48dip" android:layout_height="48dip" android:src="@drawable/settings"></ImageView> <LinearLayout android:layout_height="wrap_content" android:paddingLeft="13dip" android:orientation="vertical" android:layout_width="fill_parent"> <TextView android:layout_width="wrap_content" android:singleLine="true" android:layout_height="wrap_content" android:textSize="18dip" android:textColor="#ffffff" android:text="@string/settings"></TextView> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="12dip" android:textColor="#ffffff"></TextView> <TextView android:id="@+id/ItemsCountTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:textSize="12dip" android:textColor="#ffffff" android:text=" "></TextView> </LinearLayout> </LinearLayout> </LinearLayout> <ListView android:layout_width="fill_parent" android:id="@android:id/list" android:layout_weight="1" android:layout_height="fill_parent"> </ListView> </LinearLayout>
?當我們點擊其中某一項時,如cache option
效果:
其中部分內容如下:
<resources> <string-array name="cache_size"> <item>Off</item> <item>50 MB</item> <item>100 MB</item> <item>250 MB</item> <item>500 MB</item> </string-array> <string-array name="cache_size_values"> <item>0</item> <item>50</item> <item>100</item> <item>250</item> <item>500</item> </string-array> </resources>
?
實在不明白的可以參考: http://byandby.iteye.com/blog/1045508 ?謝謝作者呵呵。
?
?僅提供思路。
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
