我在https://github.com/anothem/android-range-seek-bar使用控件androID-range-seek-bar来显示两个拇指控件,允许选择一个范围.
我希望将指示条上选定的最小和最大值的文本格式设置为“ hh:mm:ss”,我创建了一个函数ConvertSecondsToHMmSs,该怎么做?如1000L显示“ 00:00:01”
还有更多,我希望在最小值或最大值发生变化时做一些事情,但是只有事件public voID onRangeSeekbarValuesChanged(RangeSeekbar<?> bar,Long minValue,Long maxValue),它无法区分哪个值,最小值或最大值值,已更改.我希望在最小值更改时执行A,在最大值更改时执行B!
码
protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); RangeSeekbar<Long> seekbar = (RangeSeekbar<Long>) findVIEwByID(R.ID.myRangeSeekbar); seekbar.setRangeValues(1000L,2000L);}private String ConvertSecondsToHMmSs(long millis) { return String.format("%02d:%02d:%02d", TimeUnit.MILliSECONDS.toHours(millis), TimeUnit.MILliSECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILliSECONDS.toHours(millis)), TimeUnit.MILliSECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILliSECONDS.toMinutes(millis)));}
布局
<relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:tools="http://schemas.androID.com/tools" xmlns:rsb="http://schemas.androID.com/apk/res-auto" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:paddingleft="@dimen/activity_horizontal_margin" androID:paddingRight="@dimen/activity_horizontal_margin" androID:paddingtop="@dimen/activity_vertical_margin" androID:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextVIEw androID:text="@string/hello_world" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" /> <org.florescu.androID.rangeseekbar.RangeSeekbar androID:ID="@+ID/myRangeSeekbar" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" rsb:absoluteMaxValue="150" rsb:absoluteMinValue="20"/></relativeLayout>
build.gradle
apply plugin: 'com.androID.application'androID { compileSdkVersion 23 buildToolsversion "23.0.2" defaultConfig { applicationID "com.example.cuiwei.myapplication" minSdkVersion 21 targetSdkVersion 23 versionCode 1 versionname "1.0" } buildTypes { release { MinifyEnabled false proguardfiles getDefaultProguardfile('proguard-androID.txt'), 'proguard-rules.pro' } }}dependencIEs { compile filetree(dir: 'libs', include: ['*.jar']) compile 'org.florescu.androID.rangeseekbar:rangeseekbar-library:0.3.0'}
解决方法:
这很简单,尽管您需要修改原始的RangeSeekbar:
1.
>将RangeSeekbar类复制到您的项目中
>将您的convertSecondsToHMmSs添加到自定义RangeSeekbar类中
>在RangeSeekbar的onDraw方法中:
替换(第646-647行)
String minText = String.valueOf(getSelectedMinValue()); String maxText = String.valueOf(getSelectedMaxValue());
与
String minText; String maxText; if (getSelectedMinValue() instanceof Long && getSelectedMaxValue() instanceof Long) { minText = String.valueOf(convertSecondsToHMmSs((Long)getSelectedMinValue())); maxText = String.valueOf(convertSecondsToHMmSs((Long)getSelectedMaxValue())); } else { minText = String.valueOf(getSelectedMinValue()); maxText = String.valueOf(getSelectedMaxValue()); }
(当然,可以将其推广使用!)
2.
要区分最小/最大边框变化-只需存储先前的值并进行比较即可:
Long currentMin = 1000L, currentMax = 2000L; ...... RangeSeekbar rangeSeekbar = (RangeSeekbar)findVIEwByID(R.ID.myRangeSeekbar); rangeSeekbar.setRangeValues(currentMin, currentMax); rangeSeekbar.setonRangeSeekbarchangelistener(new RangeSeekbar.OnRangeSeekbarchangelistener() { @OverrIDe public voID onRangeSeekbarValuesChanged(RangeSeekbar bar, Object minValue, Object maxValue) { if (!currentMin.equals(minValue)) { Toast.makeText(MainActivity.this, "Min border changed", Toast.LENGTH_SHORT).show(); } if (!currentMax.equals(maxValue)) { Toast.makeText(MainActivity.this, "Max border changed", Toast.LENGTH_SHORT).show(); } currentMin = (Long)minValue; currentMax = (Long)maxValue; } });
总结 以上是内存溢出为你收集整理的如何格式化android-range-seek-bar的最小值和最大值?全部内容,希望文章能够帮你解决如何格式化android-range-seek-bar的最小值和最大值?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)