自定义SeekBarPreference控件(老外出品,直接在preferences文件中使用,无需其他代码)
2011-07-19 18:51
387 查看
下面介绍SeekBarPreference控件,保存的Value为数字值,直接可以在preferences.xml文件中使用无需其他代码。
下面是控件使用到得标准Android属性
android:dialogMessage 显示对话框中的文本信息
android:text 在选择进度条后,显示的文本信息
android:max SeekBar的最大值
下面是在XML layout的例子
下面是控件使用到得标准Android属性
android:dialogMessage 显示对话框中的文本信息
android:text 在选择进度条后,显示的文本信息
android:max SeekBar的最大值
/* The following code was written by Matthew Wiggins * and is released under the APACHE 2.0 license * * http://www.apache.org/licenses/LICENSE-2.0 */ package com.hlidskialf.android.preference; import android.content.Context; import android.util.AttributeSet; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.preference.DialogPreference; import android.widget.SeekBar; import android.widget.TextView; import android.widget.LinearLayout; public class SeekBarPreference extends DialogPreference implements SeekBar.OnSeekBarChangeListener { private static final String androidns="http://schemas.android.com/apk/res/android"; private SeekBar mSeekBar; private TextView mSplashText,mValueText; private Context mContext; private String mDialogMessage, mSuffix; private int mDefault, mMax, mValue = 0; public SeekBarPreference(Context context, AttributeSet attrs) { super(context,attrs); mContext = context; mDialogMessage = attrs.getAttributeValue(androidns,"dialogMessage"); mSuffix = attrs.getAttributeValue(androidns,"text"); mDefault = attrs.getAttributeIntValue(androidns,"defaultValue", 0); mMax = attrs.getAttributeIntValue(androidns,"max", 100); } @Override protected View onCreateDialogView() { LinearLayout.LayoutParams params; LinearLayout layout = new LinearLayout(mContext); layout.setOrientation(LinearLayout.VERTICAL); layout.setPadding(6,6,6,6); mSplashText = new TextView(mContext); if (mDialogMessage != null) mSplashText.setText(mDialogMessage); layout.addView(mSplashText); mValueText = new TextView(mContext); mValueText.setGravity(Gravity.CENTER_HORIZONTAL); mValueText.setTextSize(32); params = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); layout.addView(mValueText, params); mSeekBar = new SeekBar(mContext); mSeekBar.setOnSeekBarChangeListener(this); layout.addView(mSeekBar, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)); if (shouldPersist()) mValue = getPersistedInt(mDefault); mSeekBar.setMax(mMax); mSeekBar.setProgress(mValue); return layout; } @Override protected void onBindDialogView(View v) { super.onBindDialogView(v); mSeekBar.setMax(mMax); mSeekBar.setProgress(mValue); } @Override protected void onSetInitialValue(boolean restore, Object defaultValue) { super.onSetInitialValue(restore, defaultValue); if (restore) mValue = shouldPersist() ? getPersistedInt(mDefault) : 0; else mValue = (Integer)defaultValue; } public void onProgressChanged(SeekBar seek, int value, boolean fromTouch) { String t = String.valueOf(value); mValueText.setText(mSuffix == null ? t : t.concat(mSuffix)); if (shouldPersist()) persistInt(value); callChangeListener(new Integer(value)); } public void onStartTrackingTouch(SeekBar seek) {} public void onStopTrackingTouch(SeekBar seek) {} public void setMax(int max) { mMax = max; } public int getMax() { return mMax; } public void setProgress(int progress) { mValue = progress; if (mSeekBar != null) mSeekBar.setProgress(progress); } public int getProgress() { return mValue; } }
下面是在XML layout的例子
<com.hlidskialf.android.preference.SeekBarPreference android:key="duration" android:title="Duration of something" android:summary="How long something will last" android:dialogMessage="Something duration" android:defaultValue="5" android:text=" minutes" android:max="60" />
相关文章推荐
- 自定义SeekBarPreference控件(老外出品,直接在preferences文件中使用,无需其他代码)
- Control Study->AdRotator广告控件显示自定义配置文件中广告以及与DataGrid控件结合使用显示图片(示例代码下载)
- Control Study->AdRotator广告控件显示自定义配置文件中广告以及与DataGrid控件结合使用显示图片(示例代码下载)
- Control Study->AdRotator广告控件显示自定义配置文件中广告以及与DataGrid控件结合使用显示图片(示例代码下载)
- Control Study->AdRotator广告控件显示自定义配置文件中广告以及与DataGrid控件结合使用显示图片(示例代码下载)
- VB6.0 在代码中直接调用 文件打开对话框,不使用windows控件
- 使用WebBrowser控件时在网页元素上绘制文本或其他自定义内容
- 无需安装 vsftpd , 直接使用 FTP 来管理 docker 容器中的文件
- ECSHOP 模板文件中直接嵌套使用 php代码
- C#不使用ReportViewer直接打印Report文件(rdlc)的实现代码
- libevent for qt网络模块,直接替换qt的select模型,支持epoll,select,pool.使用非常简单,无需修改以前的代码结构
- vc 在其他文件使用mfc自带的某一控件
- 最大化 JavaScript 应用程序的金科玉律是尽可能使用外部 JavaScript 文件,而不是直接将 JavaScript 代码包含在 HTML 文件中
- 使用WebBrowser控件时在网页元素上绘制文本或其他自定义内容
- 使用draggablegridview开源库添加自定义控件可以显示,添加自定义的layout文件可以显示背景色但是无法显示其控件
- 如何自定义布局文件中,控件对数据源中对数据的使用方式
- 在其他activity中使用layout下的布局文件及控件方法
- Unity3D BMFont使用图片自定义字体(无需字体文件)
- C#不使用ReportViewer直接打印Report文件(rdlc)的实现代码
- 使用wmp控件连续播放多个声音文件的代码(计算机报时程序C#)