自定义 DialogPreference 代碼備份

来源:互联网 发布:sm4密码算法.pdf 编辑:程序博客网 时间:2024/05/16 06:45
import android.app.AlertDialog.Builder;import android.content.Context;import android.content.DialogInterface;import android.content.SharedPreferences;import android.preference.DialogPreference;import android.util.AttributeSet;import android.view.LayoutInflater;import android.view.View;import android.widget.SeekBar;import android.widget.SeekBar.OnSeekBarChangeListener;import android.widget.TextView;public class ArticleTextFontPreference extends DialogPreference {public ArticleTextFontPreference(Context context, AttributeSet attrs) {super(context, attrs);}private SeekBar mLuminance = null;private TextView mTextTip = null;private SharedPreferences mShare;// private float mChangedTextSize;private int mChangedTextSize;// private float mChangeBeforeTextSize;private int mChangeBeforeTextSize;private final int mSeekBarMax = 200;@Overrideprotected void onPrepareDialogBuilder(Builder builder) {super.onPrepareDialogBuilder(builder);mShare = getPreferenceManager().getSharedPreferences();View view = LayoutInflater.from(getContext()).inflate(R.layout.setting_text_window, null);mLuminance = (SeekBar) view.findViewById(R.id.text_bar);// float currSize = mShare.getFloat(getKey(), -1.0f);int currSize = mShare.getInt(getKey(), -1);// if (currSize == -1.0f) {if (currSize == -1) {currSize = ARTICLE_CONTENT_SIZE;}mLuminance.setOnSeekBarChangeListener(mLimunanceChangeListener);mLuminance.setMax(mSeekBarMax);int progress = getProgressBySize(currSize);mLuminance.setProgress(progress);mChangeBeforeTextSize = currSize;mChangedTextSize = currSize;mTextTip = (TextView) view.findViewById(R.id.text_tip);updateTextSize(currSize);// mTextTip.setTextSize(currSize);builder.setView(view).setPositiveButton(R.string.dialog_yes,new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {updateTextSize(mChangedTextSize);// mShare.edit()// .putFloat(// ArticleTextFontPreference.this// .getKey(),// mChangedTextSize).commit();mShare.edit().putInt(ArticleTextFontPreference.this.getKey(),mChangedTextSize).commit();setSummary("当前字体大小为" + mChangedTextSize + "号");}}).setNegativeButton(R.string.dialog_no,new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {updateTextSize(mChangeBeforeTextSize);}});}private int getProgressBySize(float size) {return (int) ((size - ARTICLE_CONTENT_MIN_SIZE)* mSeekBarMax / (ARTICLE_CONTNET_MAX_SIZE - ARTICLE_CONTENT_MIN_SIZE));}private float getSizeByProgress(int progress) {return ARTICLE_CONTENT_MIN_SIZE+ (ARTICLE_CONTNET_MAX_SIZE - ARTICLE_CONTENT_MIN_SIZE)* progress / mSeekBarMax;}// private void updateTextSize(float size) {//// mTextTip.setTextSize(size);// DecimalFormat dFormat = new DecimalFormat("##0.0");// String tip = getContext().getString(R.string.setting_article_size_tip)// .trim() + dFormat.format(size);// mTextTip.setText(tip);// }private void updateTextSize(int size){mTextTip.setTextSize(size);String tip = getContext().getString(R.string.setting_article_size_tip).trim() + size;mTextTip.setText(tip);}private OnSeekBarChangeListener mLimunanceChangeListener = new OnSeekBarChangeListener() {@SuppressWarnings("unused")private int currProgress = 0;@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {}@Overridepublic void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {if (fromUser) {currProgress = progress;mChangedTextSize = (int) getSizeByProgress(progress);updateTextSize(mChangedTextSize);}}};}

2、屏幕亮度

import android.app.Activity;import android.app.AlertDialog.Builder;import android.content.ContentResolver;import android.content.Context;import android.content.DialogInterface;import android.preference.DialogPreference;import android.provider.Settings;import android.provider.Settings.SettingNotFoundException;import android.util.AttributeSet;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.WindowManager;import android.widget.SeekBar;import android.widget.SeekBar.OnSeekBarChangeListener;public class LuminancePreference extends DialogPreference {private SeekBar mLuminance = null;// private SharedPreferences mShare;// private ContentResolver mContentRes;private int mChangedBrightness;private int mChangeBeforeBrightness;private ZakerShareDB_II db2 = null;// private Context context = null;public LuminancePreference(Context context, AttributeSet attrs) {super(context, attrs);// this.context = context;// mContentRes = context.getContentResolver();db2 = ZakerShareDB_II.getInstance(context);}@Overrideprotected void onPrepareDialogBuilder(Builder builder) {super.onPrepareDialogBuilder(builder);// mShare = getPreferenceManager().getSharedPreferences();View view = LayoutInflater.from(getContext()).inflate(R.layout.setting_luminance_window, null);mLuminance = (SeekBar) view.findViewById(R.id.luminance_bar);mLuminance.setMax(255);// int luminance_progress = mShare.getInt(getKey(), -1);int luminance_progress = getScreenBrightnessFromPreference(db2);if (luminance_progress == -1) {Activity activity = (Activity) getContext();luminance_progress = getScreenBrightness(activity);mLuminance.setProgress(luminance_progress);} else {mLuminance.setProgress(luminance_progress);}Log.d("TAG", "�����ǣ�" + luminance_progress);mLuminance.setProgress(luminance_progress);mChangeBeforeBrightness = luminance_progress;mLuminance.setOnSeekBarChangeListener(mLimunanceChangeListener);builder.setView(view).setPositiveButton(R.string.dialog_yes,new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {// saveBrightness(mContentRes,// mChangedBrightness);// saveBrightnessToPreference(mChangedBrightness/mLuminance.getMax());if (mChangedBrightness == 0) {db2.putScreenBrightness((mChangeBeforeBrightness * 1.0f)/ (mLuminance.getMax() * 1.0f));} else {float f = (mChangedBrightness * 1.0f)/ (mLuminance.getMax() * 1.0f);db2.putScreenBrightness(f);Log.d("TAG", "���������" + f);}Log.d("TAG", "ԭ��������"+ mChangeBeforeBrightness+ " �ı�������" + mChangedBrightness);// mShare.edit().putInt(LuminancePreference.this.getKey(),// mChangedBrightness).commit();}}).setNegativeButton(R.string.dialog_no,new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {setLimunance(mChangeBeforeBrightness);}});}/** * ������Ļ���� *  * @param currProgress *            ȡֵ��Χ��0~mLuminance.getMax() */private void setLimunance(int currProgress) {Context mCxt = getContext();Activity activity = ((Activity) mCxt);ContentResolver contentRes = activity.getContentResolver();if (isAutoBrightness(contentRes)) {stopAutoBrightness(activity);}WindowManager.LayoutParams lp = ((Activity) mCxt).getWindow().getAttributes();float brightness = (currProgress * 1.0f) / (mLuminance.getMax() * 1.0f);float _brightness = (brightness == 0.0f) ? 0.01f : brightness;int bright = currProgress;lp.screenBrightness = (_brightness);((Activity) mCxt).getWindow().setAttributes(lp);// saveBrightness(contentRes, bright);mChangedBrightness = bright;}private boolean isAutoBrightness(ContentResolver aContentResolver) {boolean automicBrightness = false;try {automicBrightness = Settings.System.getInt(aContentResolver,Settings.System.SCREEN_BRIGHTNESS_MODE) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;} catch (SettingNotFoundException e) {e.printStackTrace();}return automicBrightness;}private void stopAutoBrightness(Activity activity) {Settings.System.putInt(activity.getContentResolver(),Settings.System.SCREEN_BRIGHTNESS_MODE,Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);}public void startAutoBrightness(Activity activity) {Settings.System.putInt(activity.getContentResolver(),Settings.System.SCREEN_BRIGHTNESS_MODE,Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);}private int getScreenBrightness(Activity activity) {int nowBrightnessValue = 0;ContentResolver resolver = activity.getContentResolver();try {nowBrightnessValue = android.provider.Settings.System.getInt(resolver, Settings.System.SCREEN_BRIGHTNESS);} catch (Exception e) {e.printStackTrace();}return nowBrightnessValue;}private int getScreenBrightnessFromPreference(ZakerShareDB_II as2) {int nowBrightnessValue = -1;float f = as2.getScreenBrightness();if (f == 0.01f) {Activity activity = (Activity) getContext();nowBrightnessValue = getScreenBrightness(activity);as2.putScreenBrightness(nowBrightnessValue / mLuminance.getMax());} else {nowBrightnessValue = (int) (f * mLuminance.getMax());}return nowBrightnessValue;}// private void saveBrightness(ContentResolver resolver, int brightness) {// Uri uri = android.provider.Settings.System// .getUriFor("screen_brightness");// android.provider.Settings.System.putInt(resolver, "screen_brightness",// brightness);// resolver.notifyChange(uri, null);// }/** * ����SeekBar������ */private OnSeekBarChangeListener mLimunanceChangeListener = new OnSeekBarChangeListener() {private int currProgress = 0;@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {// mShare.edit().putInt(MyDialogPreference.this.getKey(),// currProgress).commit();}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {}@Overridepublic void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {// ��δ��벢δʹ��formUser�ж�,���...if (fromUser) {if (progress <= 30) {progress = 30;}currProgress = progress;setLimunance(currProgress);}}};}


原创粉丝点击