如何格式化android-range-seek-bar的最小值和最大值?

如何格式化android-range-seek-bar的最小值和最大值?,第1张

概述我在https://github.com/anothem/android-range-seek-bar使用控件android-range-seek-bar来显示两个拇指控件,允许选择一个范围.我希望将指示条上选定的最小和最大值的文本格式设置为“hh:mm:ss”,我创建了一个函数ConvertSecondsToHMmSs,该怎么做?如1000L显示“00:00:01”还有更

我在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的最小值和最大值?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1090161.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存