Android——SeekBar动态显示进度
来源:互联网 发布:手机在淘宝怎么退换货 编辑:程序博客网 时间:2024/05/16 09:18
今天给大家分享一下小例子,就是SeekBar在移动时,当前进度也一起移动,具体看图啦。
其实原理很简单,就是在Seekbar在移动时,改变当前时间的位置。
代码如下:
public class MainActivity extends RxAppCompatActivity { private TextView seekCurTime, curTime, totalTime; private SeekBar seekBar; //移动步长 private float moveStep; private int screenWidth; private static final int TOTALTIME = 300;//5分钟,单位秒 private int curtime;//单位秒 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); initView(); initData(); } private void initView() { seekCurTime = (TextView) findViewById(R.id.curSeekTime); curTime = (TextView) findViewById(R.id.curTime); totalTime = (TextView) findViewById(R.id.totalTime); seekBar = (SeekBar) findViewById(R.id.seekbar); seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean b) { curtime = progress * TOTALTIME / 100; curTime.setText(Utils.getAudioTime(curtime)); seekCurTime.setText(Utils.getAudioTime(curtime)); setSeekCurTimeLocation(progress); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); } private void initData() { curTime.setText(Utils.getAudioTime(0)); totalTime.setText(Utils.getAudioTime(TOTALTIME)); seekBar.setMax(100); screenWidth = getWindowManager().getDefaultDisplay().getWidth() - 60; moveStep = ((float) screenWidth / 100) * 1.0f; Observable. .interval(1, TimeUnit.SECONDS) .compose(this.<Long>bindToLifecycle()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<Long>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(Long aLong) { curtime++; int progress = (int) ((float) curtime / TOTALTIME * 100); seekBar.setProgress(progress); curTime.setText(Utils.getAudioTime(curtime)); seekCurTime.setText(Utils.getAudioTime(curtime)); setSeekCurTimeLocation(progress); } }); } private void setSeekCurTimeLocation(int progress) { LinearLayout.LayoutParams layoutParams = (LinearLayout .LayoutParams) seekCurTime.getLayoutParams(); int marginStart = (int) (progress * moveStep - seekCurTime.getWidth() / 2); if (marginStart <= seekBar.getWidth() -seekCurTime.getWidth()) { layoutParams.setMarginStart(marginStart); } seekCurTime.setLayoutParams(layoutParams); } @Override protected void onDestroy() { super.onDestroy(); }}
其他实现方式:Android使用SeekBar时动态显示进度且随SeekBar一起移动
layout()方法我在使用时无效,所以换成修改LayoutParams了。
阅读全文
0 0
- Android——SeekBar动态显示进度
- Android开发之seekbar动态显示进度
- Android 使用SeekBar时动态显示进度且随SeekBar一起移动
- Android SeekBar显示进度在thumb上
- Android 自定义SeekBar显示进度百分比
- Android seekbar 滑动时上方显示进度
- Android——SeekBar(进度、音量大小的控件)
- <Android>进度控件seekbar
- Android自定义SeekBar,滑动时弹出气泡指示器显示进度
- AlertDialog弹窗引用自定义layout布局动态显示seekbar进度
- [Android开发]仿天天P图带气泡显示百分比进度的自定义SeekBar
- Android的SeekBar进度详解和进度系列控件自定义
- Android NumberProgressBar:动态移动显示百分比进度的进度条
- Android学习笔记(八)——显示进度对话框
- IndicatorSeekBar 自定义SeekBar,滑动显示进度气泡指示器
- android状态栏显示进度
- 笔记——Android自定义seekbar中,滑块显示不全解决办法
- android自定义进度值可拖动的seekbar
- 二叉树前序中序输出后序[计算所2017保研真题]
- tensorflow: 如何使用矩阵
- Maven生成可以直接运行的jar包的多种方式
- PhpStorm常用快捷键总结
- kotlin集合操作符——过滤操作符
- Android——SeekBar动态显示进度
- 错误:没有与参数列表匹配的 重载函数
- opencv+zxing进行条码识别并解码
- Incude便签
- 软件质量保证--基于Google Test的 Add函数测试
- EM算法与思想
- iOS: 本地通知&远程推送
- 尝试Spring Boot2 WebFlux(启动失败了?不要怕)
- JNI中枚举类型作为参数