摘要:保存路徑如下包名包名使用方法一般在文件夾中創(chuàng)建文件來對(duì)進(jìn)行布局,布局文件中通常使用容器,包含多個(gè)控件,可以設(shè)置分類標(biāo)題。在之前需要繼承此方法不是太推薦使用,已被啟用,之后更高版本,則需要繼承,使用控制布局,然后實(shí)現(xiàn)不同控件的處理事件。
極力推薦文章:歡迎收藏
Android 干貨分享
本篇文章主要介紹 Android 開發(fā)中的部分知識(shí)點(diǎn),通過閱讀本篇文章,您將收獲以下內(nèi)容:
Perference 簡(jiǎn)介
Perference 使用方法
使用XML定義Preference
使用Fragment 定義Preference
實(shí)現(xiàn)效果
Preference 在Android 中重要的控件之一,比如 Settings 模塊大部分都是通過Preference 實(shí)現(xiàn)的,本章將研究preference 使用方法
1.Preference 簡(jiǎn)介 Preference 繼承關(guān)系java.lang.Object ???? android.preference.Preference
Preference 常用于APP 設(shè)置模塊,比如 Android 系統(tǒng)中的Settings 模塊,它可以默認(rèn)把我們的數(shù)據(jù)保存在SharePreference中。
鍵值對(duì)(key-values) 獲取方法同 SharePreference
SharedPreferences mSp = PreferenceManager.getDefaultSharedPreferences(this); String favPhone = mSp.getString(PREF_LISTPHONE, "MI");
Preference 數(shù)據(jù)保存
Preference通過key-values 鍵值對(duì)的形式保存。
保存路徑如下:
/data/data/包名/shared_prefs/包名_preferences.xml
一般在XML文件夾中創(chuàng)建xml 文件來對(duì)Settings進(jìn)行布局,布局文件中通常使用PreferenceScreen容器,PreferenceScreen 包含多個(gè) Preference 控件,PreferenceCategory 可以設(shè)置分類標(biāo)題。
常用Preference 控件如下:
PreferenceScreen
CheckBoxPreference
EditTextPreference
ListPreference
PreferenceCategory
RingtonePreference.
上面控件等同Layout布局中的View,PreferenceScreen 等同Layout布局中的ViewGroup。在Android 3.0 之前需要繼承PreferenceActivity(此方法不是太推薦使用,已被啟用),3.0 之后更高版本,則需要繼承Activity,使用Fragment 控制布局,然后實(shí)現(xiàn)不同控件的處理事件。
Perference 常用使用方法如下兩種:
使用XML定義Preference
使用Fragment 定義Preference
3. 使用XML定義Preference此方法有點(diǎn)過時(shí),不太建議使用,但目前還可以用。
其使用方法如下:
將XML 文件保存在 res/xml/ 目錄中 例如: preferences.xml
繼承PreferenceActivity在 onCreate方法中直接調(diào)用addPreferencesFromResource(R.xml.preference);添加布局
點(diǎn)擊事件處理setOnPreferenceClickListener ,內(nèi)容發(fā)生改變事件處理 setOnPreferenceChangeListener
Preference使用案例如下:
res /xml /preferences.xml
Activity 處理方法
public class PreferenceMethods extends PreferenceActivity implements OnPreferenceClickListener, OnPreferenceChangeListener { public static final String PREF_BLUE = "pref_blue"; public static final String PREF_LISTPHONE = "pref_fav_phone"; public static final String PREF_CITY = "fav_city"; public static final String PREF_RING = "pref_ring"; private CheckBoxPreference mBlueCheckPreference; private ListPreference mFavPhoneListPreference; private EditTextPreference mFavCityEdPreference; private RingtonePreference mRingtonePreference; private SwitchPreference mSwitchPreference; private SharedPreferences mSp; boolean isCheck; @SuppressLint("NewApi") @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preference); mSp = PreferenceManager.getDefaultSharedPreferences(this); isCheck = mSp.getBoolean(PREF_BLUE, true); String favPhone = mSp.getString(PREF_LISTPHONE, "MI"); mBlueCheckPreference = (CheckBoxPreference) findPreference(PREF_BLUE); mFavPhoneListPreference = (ListPreference) findPreference(PREF_LISTPHONE); mFavCityEdPreference = (EditTextPreference) findPreference(PREF_CITY); mRingtonePreference = (RingtonePreference) findPreference(PREF_RING); mSwitchPreference = (SwitchPreference) findPreference("sw_perference"); // mSwitchPreference.setEnabled(false); mSwitchPreference.setChecked(true); mSwitchPreference.setShouldDisableView(true); mFavPhoneListPreference.setSummary("ffffdd"); mFavPhoneListPreference.setOnPreferenceClickListener(this); mFavPhoneListPreference.setOnPreferenceChangeListener(this); mFavPhoneListPreference.setValueIndex(3); mBlueCheckPreference.setChecked(isCheck); mBlueCheckPreference.setOnPreferenceClickListener(this); mBlueCheckPreference.setOnPreferenceChangeListener(this); String favCity = mSp.getString(PREF_CITY, "成都"); mFavCityEdPreference.setOnPreferenceClickListener(this); mFavCityEdPreference.setOnPreferenceChangeListener(this); mFavCityEdPreference.setSummary(favCity); String favRingtone = mSp.getString(PREF_RING, "十年"); mRingtonePreference.setSummary(favRingtone); mRingtonePreference.setOnPreferenceChangeListener(this); mRingtonePreference.setOnPreferenceClickListener(this); } @Override public boolean onPreferenceClick(Preference preference) { return true; } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { if (mBlueCheckPreference.equals(preference)) { isCheck = !isCheck; mBlueCheckPreference.setChecked(isCheck); } if (mFavPhoneListPreference.equals(preference)) { mFavPhoneListPreference.setSummary(newValue.toString()); } if (mFavCityEdPreference.equals(preference)) { mFavCityEdPreference.setSummary(newValue.toString()); } if (preference.equals(mRingtonePreference)) { mRingtonePreference.setSummary(newValue.toString()); } return true; } }4. 使用Fragment 定義Preference
此方法比較建議是使用,如需了解Fragment 使用方法,請(qǐng)看Fragment 使用詳解
首先自定Fragment片段
a.自定義 SettingsFragment
public class SettingsFragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Load the preferences from an XML resource addPreferencesFromResource(R.xml.preference); } }
b.preference 實(shí)現(xiàn)
Activity 中調(diào)用Fragment
public class SettingPreferenceActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_preference); getFragmentManager().beginTransaction() .replace(R.id.fm_pref, new SettingsFragment()).commit(); } }
填充布局
5.實(shí)現(xiàn)效果如下:
至此,本篇已結(jié)束,如有不對(duì)的地方,歡迎您的建議與指正。同時(shí)期待您的關(guān)注,感謝您的閱讀,謝謝!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/75896.html
摘要:簡(jiǎn)介是平臺(tái)上一個(gè)輕量級(jí)數(shù)據(jù)存儲(chǔ)方式,用來保存應(yīng)用的一些常用配置,比如狀態(tài),暫停時(shí),將此的狀態(tài)保到中當(dāng)重載,系統(tǒng)回調(diào)方法時(shí),再從中將值取出。提供了常規(guī)的等類型數(shù)據(jù)的保存接口。一般這個(gè)文件存儲(chǔ)在下是指定讀寫方式,其值有四種。 簡(jiǎn)介 SharedPreferences是Android平臺(tái)上一個(gè)輕量級(jí)數(shù)據(jù)存儲(chǔ)方式,用來保存應(yīng)用的一些常用配置,比如Activity狀態(tài),Activity暫停時(shí),...
閱讀 1452·2023-04-25 19:00
閱讀 4150·2021-11-17 17:00
閱讀 1764·2021-11-11 16:55
閱讀 1523·2021-10-14 09:43
閱讀 3120·2021-09-30 09:58
閱讀 856·2021-09-02 15:11
閱讀 2127·2019-08-30 12:56
閱讀 1405·2019-08-30 11:12