android 设置类PreferenceActivity
来源:互联网 发布:一千左右机械键盘 知乎 编辑:程序博客网 时间:2024/05/01 23:10
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"?><PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:key="pref_first_preferencescreen_key" android:title="设置界面"> <PreferenceCategory android:title="User"> <EditTextPreference android:key="pref_username" android:summary="Username:" android:title="用户名"/> </PreferenceCategory> <PreferenceCategory android:title="Application"> <Preference android:key="pref_rate" android:summary="Rate the app in the store!" android:title="在市场下载率"/> <Preference android:key="pref_share" android:summary="Share the app with your friends" android:title="分享"/> <com.manning.androidhacks.hack004.preference.EmailDialog android: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.AboutDialog android: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
0 0
- android 设置类PreferenceActivity
- android PreferenceActivity类实现设置界面
- PreferenceActivity-Android的设置界面
- Android设置Settings实现:PreferenceActivity
- Android设置Settings实现:PreferenceActivity
- Android PreferenceActivity类
- 设置PreferenceActivity
- android设置页面之PreferenceActivity及Preference
- Android 偏好设置 PreferenceActivity 小于3.0使用
- Android设置Settings实现:PreferenceActivity【1】
- Android设置Settings实现:PreferenceActivity【1】
- Android设置Settings实现:PreferenceActivity(1)
- Android设置Settings实现:PreferenceActivity【1】
- Android之设置页面(PreferenceActivity使用)
- Android之PreferenceActivity类介绍
- android PreferenceActivity
- android PreferenceActivity
- android PreferenceActivity
- Android Material Design之Toolbar与Palette实践
- From MySQL+MMM to MariaDB+Galera Cluster: A High Availability Makeover
- 文本框禁止粘贴
- Oracle EBS开发查找数据源(续)
- IOS开发笔记之应用间的跳转和数据传递
- android 设置类PreferenceActivity
- readonly 和 disable 在表单提交时候的区别
- java.util-学习(浏览)
- apple apns python client
- 关于IIC的一些备忘
- 176532版本webkit中RenderObject类结构
- unity学习笔记【使用2d背景】
- [sqoop]导入大表的异常
- iOS7获取UUID以及转换MD5