Android UI控件 拖动条SeekBar
来源:互联网 发布:server2008 网络驱动 编辑:程序博客网 时间:2024/06/05 20:53
之前所讲的ProgressBar是不可拖动的,是软件自动进行的。而像音乐播放器这种拖动条用户是可以通过拖动来进行操作的,这就需要用到SeekBar。
下面的程序使用SeekBar简单实现了一个播放器的播放条,没有进行拖动时会自动前进,用户进行拖动后在拖动后的地方开始继续。
public class MainActivity extends AppCompatActivity { //定义的拖动条 private SeekBar sb; //用来显示进度 private TextView tv; private Timer timer; private TimerTask timerTask; //一开始进度为0 public int BarProgress = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); sb = (SeekBar) findViewById(R.id.seekBar); tv = (TextView) findViewById(R.id.textView); //最大进度为50 sb.setMax(50); /*开始每隔一秒计一次时 * 这里计时后不用tv.setText,因为sb有一个监听器,只要当拖动条改变,不管改变是否来自用户,都会执行 * 详细的见后面的注释*/ timer = new Timer(); timerTask = new TimerTask() { @Override public void run() { if (BarProgress <= 50) { sb.setProgress(BarProgress); BarProgress++; } } }; timer.schedule(timerTask, 1000, 1000); /*设置拖动的监听器,SeekBar.OnSeekBarChangeListener()是一个抽象接口,需要实现三个方法 * public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) * public void onStartTrackingTouch(SeekBar seekBar) * 和public void onStopTrackingTouch(SeekBar seekBar) */ sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { /*当拖动条进度改变时执行,传入的参数分别是进度条,改变时的进程,和改变是否来自用户拖动 * 这里这种播放器的进度条的改变有两种情况,一种是播放时自动前进,另一种是用户进行拖动 * 显然前者的fromUser=false,后者的fromUser=true*/ @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { tv.setText(String.valueOf(progress)); BarProgress = progress; } //当拖动开始时执行,拖动一开始,定时器停止 @Override public void onStartTrackingTouch(SeekBar seekBar) { timer.cancel(); timerTask.cancel(); timer = null; timerTask = null; } //当拖动结束时执行,拖动一结束,定时器重新开始工作 @Override public void onStopTrackingTouch(SeekBar seekBar) { if (timer == null && timerTask == null && BarProgress <= 50) { timer = new Timer(); timerTask = new TimerTask() { @Override public void run() { sb.setProgress(BarProgress); BarProgress++; } }; timer.schedule(timerTask, 1000, 1000); } } }); }}
如果将计时器放在拖动条监听器外面,在onProgressChanged方法中对BarProgress进行改变,会导致修改不成功,跳出onProgressChanged方法后拖动条进度又回去了,原因未知,可能后线程有关,在以后线程的学习中再回过头来看。
0 0
- Android UI控件详解-SeekBar(拖动条)
- Android UI控件 拖动条SeekBar
- android 控件 拖动条(SeekBar)
- UI控件之SeekBar(拖动条)
- Android UI设计 SeekBar拖动条用法
- [控件]SeekBar拖动条
- SeekBar拖动条控件
- Android基础控件之SeekBar(拖动条)
- 【Android 开发】:UI控件之拖动条控件 SeekBar的使用方法
- android 拖动条 SeekBar
- Android SeekBar拖动条
- android 拖动条(SeekBar)
- android SeekBar 拖动条
- Android:拖动条SeekBar
- Android SeekBar拖动条
- Android SeekBar(拖动条)
- android---拖动条(SeekBar)
- android 自定义SeekBar(拖动条)
- 结构体与类(验证结构体是值类型,类是引用类型)
- hdu 5832 A water problem 2016icpc网络赛
- 进入数据库的世界
- 非修改性序列算法之mismatch
- Power Strings_poj2406_kmp
- Android UI控件 拖动条SeekBar
- 快速输入模板
- Java提取中括号中的内容
- java中Date/Time/Timestamp对应sql
- .NET Framework基本概念
- MySQL数据类型和常用字段属性总结
- Cadence 17.2笔记(1)
- 炎炎夏日冰凉一下:纳西族圣山玉龙雪山之行
- 注册COM组件