android 设置类PreferenceActivity
生活随笔
收集整理的這篇文章主要介紹了
android 设置类PreferenceActivity
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? ? ?PreferenceActivity是android提供的對系統信息和配置進行自動保存的Activity,它通過SharedPreference方式將信息保存在XML 文件當中。使用PreferenceActivity不需要我們對SharedPreference進行信息保存讀取操作,系統會自動對Activity 的各種View上的改變進行保存()。
? ??可以自己實現一個,但是那樣又會使Activity中的邏輯代碼和xml布局文件過于復雜,遠遠不及PreferenceActivity來的方便快捷。
? ? ?用他來自定義設置,省去了我們通過對SharedPreference設置的保存讀取,很方便。PreferenceActivity在每次退出后都會自動記錄下當前頁面的設置,下次啟動時會自動加載
這是根據hack004修改來的
一、效果圖:
二、部分自定義實現類
自定義Prefeference
?把view的點擊事件傳遞給ImagePreference
package com.manning.androidhacks.hack004.preference;import com.manning.androidhacks.hack004.R;import android.content.Context; import android.preference.Preference; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageView;public class ImagePreference extends Preference {private ImageView iv_perference_icon;private int _id;// 聲明監聽器private OnClickListener mOnClickListener;public ImagePreference(Context context, int id) {super(context);// TODO Auto-generated constructor stubthis._id = id;setLayoutResource(R.layout.preference_list_item_layout);}@Overrideprotected void onBindView(View view) {// TODO Auto-generated method stubsuper.onBindView(view);if (iv_perference_icon == null) {iv_perference_icon = (ImageView) view.findViewById(R.id.iv_perference_icon);iv_perference_icon.setImageResource(_id);view.setClickable(true);view.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View view) {if (mOnClickListener != null)// 把view的點擊事件傳遞給ImagePreferencemOnClickListener.onClick(view);elsereturn;}});}}// 設置ImagePreference的監聽方法public void setOnClickListener(OnClickListener mOnClickListener) {this.mOnClickListener = mOnClickListener;} }三、主類;
import com.manning.androidhacks.hack004.preference.ImagePreference;import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.net.Uri; import android.os.Bundle; import android.preference.EditTextPreference; import android.preference.Preference; import android.preference.PreferenceActivity; import android.view.View; import android.view.View.OnClickListener; import android.widget.Toast; //MainActivit繼承PreferenceActivity,其是ListActivity的子類 public class MainActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//設置背景this.getListView().setBackgroundResource(R.drawable.backgroud);addPreferencesFromResource(R.xml.prefs);initImagePreference();Preference sharePref = findPreference("pref_share");Intent shareIntent = new Intent();shareIntent.setAction(Intent.ACTION_SEND);shareIntent.setType("text/plain");shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Check this app!");shareIntent.putExtra(Intent.EXTRA_TEXT, "Check this awesome app at: ...");sharePref.setIntent(shareIntent);Preference ratePref = findPreference("pref_rate");Uri uri = Uri.parse("market://details?id=" + getPackageName());Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);ratePref.setIntent(goToMarket);updateUserText();}private void initImagePreference() {getPreferenceScreen().setOrderingAsAdded(true);ImagePreference pre_update = new ImagePreference(this, R.drawable.update);// pre_update.setKey(Intents.KEY_UPDATE);pre_update.setTitle("更新");pre_update.setOrder(4);pre_update.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub// You can do something here when somebady click this view.Toast.makeText(MainActivity.this, "版本升級", 1).show();}});getPreferenceScreen().addPreference(pre_update);}@Overrideprotected void onResume() {super.onResume();getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);}@Overrideprotected void onPause() {super.onPause();getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);}@Overridepublic void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {if (key.equals("pref_username")) {updateUserText();}}private void updateUserText() {EditTextPreference pref;pref = (EditTextPreference) findPreference("pref_username");String user = pref.getText();if (user == null) {user = "請填寫你的用戶名";}pref.setSummary(String.format("Username: %s", user));} }五、布局文件: <?xml version="1.0" encoding="utf-8"?> <PreferenceScreenxmlns:android="http://schemas.android.com/apk/res/android"android:key="pref_first_preferencescreen_key"android:title="設置界面"><PreferenceCategoryandroid:title="User"><EditTextPreferenceandroid:key="pref_username"android:summary="Username:"android:title="用戶名"/></PreferenceCategory><PreferenceCategoryandroid:title="Application"><Preferenceandroid:key="pref_rate"android:summary="Rate the app in the store!"android:title="在市場下載率"/><Preferenceandroid:key="pref_share"android:summary="Share the app with your friends"android:title="分享"/><com.manning.androidhacks.hack004.preference.EmailDialogandroid:dialogIcon="@drawable/ic_launcher"android:dialogTitle="Send Feedback"android:dialogMessage="Do you want to send an email with feedback?"android:key="pref_sendemail_key"android:negativeButtonText="Cancel"android:positiveButtonText="OK"android:summary="Send your feedback by e-mail"android:title="發送郵件"/><com.manning.androidhacks.hack004.preference.AboutDialogandroid:dialogIcon="@drawable/ic_launcher"android:dialogTitle="About"android:key="pref_about_key"android:negativeButtonText="@null"android:title="關于"/></PreferenceCategory></PreferenceScreen> AboutDialog,EmailDialog為自定義控件六、源碼:
http://download.csdn.net/detail/xiaobijia/8197103
總結
以上是生活随笔為你收集整理的android 设置类PreferenceActivity的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: allegro转AD教程
- 下一篇: 工作277:v-model实战