制作网站报价,工程项目查询哪个网站,电子商务网站建设与管理考试题,南京网站开发培训极力推荐文章#xff1a;欢迎收藏Android 干货分享 阅读五分钟#xff0c;每日十点#xff0c;和您一起终身学习#xff0c;这里是程序员Android 本篇文章主要介绍 Android 开发中的部分知识点#xff0c;通过阅读本篇文章#xff0c;您将收获以下内容: Perference 简介P… 极力推荐文章欢迎收藏Android 干货分享 阅读五分钟每日十点和您一起终身学习这里是程序员Android 本篇文章主要介绍 Android 开发中的部分知识点通过阅读本篇文章您将收获以下内容: Perference 简介Perference 使用方法使用XML定义Preference使用Fragment 定义Preference实现效果 Preference 在Android 中重要的控件之一比如 Settings 模块大部分都是通过Preference 实现的本章将研究preference 使用方法 1.Preference 简介 Preference 继承关系 java.lang.Object↳ android.preference.Preference Preference 常用于APP设置模块比如Android 系统中的Settings 模块它可以默认把我们的数据保存在SharePreference中。 键值对(key-values) 获取方法同 SharePreference SharedPreferences mSp PreferenceManager.getDefaultSharedPreferences(this);String favPhone mSp.getString(PREF_LISTPHONE, MI);Preference 数据保存 Preference通过key-values 键值对的形式保存。 保存路径如下/data/data/包名/shared_prefs/包名_preferences.xml 2. Perference 使用方法 一般在XML文件夹中创建xml文件来对Settings进行布局布局文件中通常使用PreferenceScreen容器PreferenceScreen包含多个 Preference控件PreferenceCategory可以设置分类标题。 常用Preference控件如下PreferenceScreenCheckBoxPreferenceEditTextPreferenceListPreferencePreferenceCategoryRingtonePreference. 上面控件等同Layout布局中的ViewPreferenceScreen 等同Layout布局中的ViewGroup。在Android 3.0之前需要继承PreferenceActivity此方法不是太推荐使用已被启用3.0之后更高版本则需要继承Activity使用Fragment控制布局然后实现不同控件的处理事件。 Perference常用使用方法如下两种 使用XML定义Preference 使用Fragment 定义Preference 3. 使用XML定义Preference 此方法有点过时不太建议使用但目前还可以用。 其使用方法如下 将XML 文件保存在res/xml/目录中 例如preferences.xml继承PreferenceActivity在onCreate方法中直接调用addPreferencesFromResource(R.xml.preference);添加布局点击事件处理setOnPreferenceClickListener内容发生改变事件处理 setOnPreferenceChangeListener Preference使用案例如下res /xml /preferences.xml ?xml version1.0 encodingutf-8?
PreferenceScreen xmlns:androidhttp://schemas.android.com/apk/res/android Preferenceandroid:keyabout_phoneandroid:summarystring/pref_about_phone_sumandroid:titlestring/pref_about_phone_tittle /SwitchPreferenceandroid:keysw_perferenceandroid:summarystring/pref_about_phone_sumandroid:titlestring/pref_about_phone_tittle /RingtonePreferenceandroid:keypref_ringandroid:summarystring/pref_ringtone_tittleandroid:titlestring/pref_ringtone_sum /CheckBoxPreferenceandroid:defaultValuetrueandroid:iconnullandroid:keypref_blueandroid:summarystring/preference_blue_sumandroid:titlestring/preference_blue_tittleandroid:widgetLayoutlayout/test /PreferenceCategoryandroid:keypref_fav_categoryandroid:titlestring/pref_fav_category_tittle EditTextPreferenceandroid:keyfav_cityandroid:summarystring/pref_ed_name_sumandroid:titlestring/pref_ed_name_tittle /ListPreferenceandroid:dialogTitlestring/pref_fav_titleandroid:entriesarray/fav_phoneandroid:entryValuesarray/fav_phoneandroid:keypref_fav_phoneandroid:summarystring/pref_fav_sumandroid:titlestring/pref_fav_title //PreferenceCategoryPreferenceCategoryandroid:keypref_contact_categoryandroid:titlestring/pref_fav_contact_tittle /PreferenceScreenandroid:keypre_voicemail_setting_keyandroid:persistentfalseandroid:titlestring/pref_voicemail_tittle Preferenceandroid:keyvoice_mailandroid:summarystring/pref_voicemail_tittleandroid:titlestring/pref_voicemail_sum intentandroid:actionandroid.intent.action.VIEWandroid:datahttp://www.baidu.com //Preference/PreferenceScreen/PreferenceScreen Activity处理方法 public class PreferenceMethods extends PreferenceActivity implementsOnPreferenceClickListener, 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)Overridepublic 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(dddd);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);}Overridepublic boolean onPreferenceClick(Preference preference) {return true;}Overridepublic 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 使用方法请看Fragment 使用详解 首先自定Fragment片段 a.自定义 SettingsFragment public class SettingsFragment extends PreferenceFragment {Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// Load the preferences from an XML resourceaddPreferencesFromResource(R.xml.preference);}
}b.preference 实现 ?xml version1.0 encodingutf-8?
PreferenceScreen xmlns:androidhttp://schemas.android.com/apk/res/android Preferenceandroid:keyabout_phoneandroid:summarystring/pref_about_phone_sumandroid:titlestring/pref_about_phone_tittle /SwitchPreferenceandroid:keysw_perferenceandroid:summarystring/pref_about_phone_sumandroid:titlestring/pref_about_phone_tittle /RingtonePreferenceandroid:keypref_ringandroid:summarystring/pref_ringtone_tittleandroid:titlestring/pref_ringtone_sum /CheckBoxPreferenceandroid:defaultValuetrueandroid:iconnullandroid:keypref_blueandroid:summarystring/preference_blue_sumandroid:titlestring/preference_blue_tittleandroid:widgetLayoutlayout/test /PreferenceCategoryandroid:keypref_fav_categoryandroid:titlestring/pref_fav_category_tittle EditTextPreferenceandroid:keyfav_cityandroid:summarystring/pref_ed_name_sumandroid:titlestring/pref_ed_name_tittle /ListPreferenceandroid:dialogTitlestring/pref_fav_titleandroid:entriesarray/fav_phoneandroid:entryValuesarray/fav_phoneandroid:keypref_fav_phoneandroid:summarystring/pref_fav_sumandroid:titlestring/pref_fav_title //PreferenceCategoryPreferenceCategoryandroid:keypref_contact_categoryandroid:titlestring/pref_fav_contact_tittle /PreferenceScreenandroid:keypre_voicemail_setting_keyandroid:persistentfalseandroid:titlestring/pref_voicemail_tittle Preferenceandroid:keyvoice_mailandroid:summarystring/pref_voicemail_tittleandroid:titlestring/pref_voicemail_sum intentandroid:actionandroid.intent.action.VIEWandroid:datahttp://www.baidu.com //Preference/PreferenceScreen/PreferenceScreen Activity 中调用Fragment public class SettingPreferenceActivity extends Activity {Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_preference);getFragmentManager().beginTransaction().replace(R.id.fm_pref, new SettingsFragment()).commit();}} 填充布局 ?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationvertical FrameLayoutandroid:idid/fm_prefandroid:layout_widthmatch_parentandroid:layout_heightmatch_parent //LinearLayout 5.实现效果如下 至此本篇已结束如有不对的地方欢迎您的建议与指正。同时期待您的关注感谢您的阅读谢谢 转载于:https://www.cnblogs.com/wangjie1990/p/11310876.html