Android下的扩展SeekBar
来源:互联网 发布:js获得status code 编辑:程序博客网 时间:2024/06/06 05:29
Android系统下的SeekBar太简单,简单到连起止的提示和动态选择后变化的提示都没有。最起码我没找到,所以自己实现了一个扩展的SeekBar,应该好用很多。其效果图如下:
贴上代码:
1、调用的方法举例:
//seek bar preference
ExtSeekBarPreference loPrefHttpRangeSize = new ExtSeekBarPreference(this, null);
loPrefHttpRangeSize.setKey(PREF_KEY_HTTP_RANGE_SIZE);
loPrefHttpRangeSize.setTitle(R.string.CONFIG_TITLE_HTTP_RANGESIZE);
loPrefHttpRangeSize.setPersistent(true);
loPrefHttpRangeSize.setMin(3);
loPrefHttpRangeSize.setMax(20);
loPrefHttpRangeSize.setKeyProgressIncrement(1);
loPrefHttpRangeSize.setUnit("00KB");
loPrefHttpRangeSize.setValue(coGlobalContext.coPrefs.getInt(PREF_KEY_HTTP_RANGE_SIZE, PREF_DEFAULT_HTTP_RANGE_SIZE));
loPrefHttpRangeSize.setSummary(coGlobalContext.coPrefs.getInt(PREF_KEY_HTTP_RANGE_SIZE, PREF_DEFAULT_HTTP_RANGE_SIZE));
loPrefHttpRangeSize.setNegativeButtonText(getResources().getString(R.string.CONFIRM_CANCEL));
loPrefHttpRangeSize.setPositiveButtonText(getResources().getString(R.string.CONFIRM_OK));
dialogBasedPrefCat.addPreference(loPrefHttpRangeSize);
2、扩展的SeekBar类:
public class ExtSeekBarPreference extends DialogPreference implements SeekBar.OnSeekBarChangeListener{
private int ciMinVal=0;
private int ciMaxVal=100;
private int ciInitVal=0;
private int ciIncrement=1;
private String csUnit="";
private Context coContext;
private TextView coSeekBarValView=null;
private SeekBar coSeekBar;
public ExtSeekBarPreference(Context aoContext, AttributeSet attrs)
{
super(aoContext, attrs);
this.coContext = aoContext;
}
public int getMin()
{
return ciMinVal;
}
public void setMin(int aiMin)
{
ciMinVal = aiMin;
}
public void setMax(int aiMax)
{
ciMaxVal = aiMax;
}
public void setUnit(String asUnit)
{
csUnit = asUnit;
}
public void setKeyProgressIncrement(int aiIncrement)
{
ciIncrement = aiIncrement;
}
public void setValue(int aiVal)
{
ciInitVal = aiVal;
}
protected void onPrepareDialogBuilder(Builder builder)
{
LayoutInflater factory = LayoutInflater.from(coContext);
View loSeekBarView = factory.inflate(R.layout.view_ext_seekbar, null);
builder.setView(loSeekBarView);
coSeekBar = (SeekBar)loSeekBarView.findViewById(R.id.SeekBarControl);
coSeekBar.setOnSeekBarChangeListener(this);
coSeekBar.setMax(ciMaxVal-ciMinVal);
coSeekBar.setKeyProgressIncrement(ciIncrement);
TextView loMinText = (TextView)loSeekBarView.findViewById(R.id.SeekBarMin);
loMinText.setText(ciMinVal+csUnit);
TextView loMaxText = (TextView)loSeekBarView.findViewById(R.id.SeekBarMax);
loMaxText.setText(ciMaxVal+csUnit);
coSeekBarValView = (TextView)loSeekBarView.findViewById(R.id.SeekBarVal);
//initial value
coSeekBar.setProgress(ciInitVal-ciMinVal);
}
public void setSummary(int aiVal)
{
String lsSummary="";
lsSummary = (aiVal) + csUnit;
super.setSummary(lsSummary);
}
protected void onDialogClosed(boolean positiveResult)
{
if (positiveResult)
{
// 保存SeekBar的值
persistInt(coSeekBar.getProgress()+ciMinVal);
// must reset initval
ciInitVal = coSeekBar.getProgress()+ciMinVal;
}
super.onDialogClosed(positiveResult);
}
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) {
coSeekBarValView.setText((ciMinVal+progress)+csUnit);
this.setSummary((ciMinVal+progress)+csUnit);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
}
3、SeekBar的布局xml:
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:paddingTop="10px"
android:paddingLeft="10px"
android:paddingRight="10px"
android:paddingBottom="10px"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<SeekBar
android:id="@+id/SeekBarControl"
android:paddingLeft="10px"
android:paddingRight="10px"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/SeekBarMin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:textSize="18px"
android:text="Min" />
<TextView
android:id="@+id/SeekBarVal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:textSize="18px"
android:text="" />
<TextView
android:id="@+id/SeekBarMax"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:textSize="18px"
android:text="Max" />
</RelativeLayout>
</LinearLayout>
- Android下的扩展SeekBar
- 【SeekBar】Android 自定义漂亮的SeekBar样式
- Android SeekBar的使用
- Android的SeekBar
- Android的SeekBar
- Android的SeekBar
- android 竖直的seekbar
- android seekbar的用法
- 【Android】SeekBar的使用
- Android下修改SeekBar样式
- Android下修改SeekBar样式
- Android下修改SeekBar样式
- Android下修改SeekBar样式
- Android下修改SeekBar样式
- Android下修改SeekBar样式
- Android下修改SeekBar样式
- Android下修改SeekBar样式
- Android中SeekBar的使用
- rtc hwclock 使用
- 在spring中如何使用hibernate?既(struts2+hibernate+spring)
- NTLDR和Bootfont.bin的作用
- 播放本地MP3 (二)
- 腾讯offer路 一路走来
- Android下的扩展SeekBar
- JAVA动态代理机制
- 求最大连续子段和 的 dp算法
- JavaScript 用于去掉前后空格
- EJB
- 查看android里的数据库的内容的方法
- string.format输出大括号
- OMAP3530下bc-cat 编程
- 下一盤權力好棋