public class MediaPlayerActivity extends Activity implements Runnable{
/** Called when the activity is first created. */
private MediaPlayer mPlayer;
private ImageButton mPlay;
private ImageButton mPause;
private SeekBar mSeekBar;
private int total;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mPlay = (ImageButton) findViewById(R.id.play);
mPause = (ImageButton) findViewById(R.id.pause);
mSeekBar = (SeekBar) findViewById(R.id.seekbar);
mPlayer = MediaPlayer.create(this,R.raw.mp3_file_name);
mSeekBar.setProgress(0);
total = mPlayer.getDuration();
mPause.setVisibility(View.INVISIBLE);
mPlay.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
mPlayer.start();
mSeekBar.setMax(total);
mPlay.setVisibility(View.INVISIBLE);
mPause.setVisibility(View.VISIBLE);
}
});
mPause.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if(mPlayer.isPlaying()){
mPlayer.pause();
mPlay.setVisibility(View.VISIBLE);
mPause.setVisibility(View.INVISIBLE);
}
}
});
mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
// TODO Auto-generated method stub
if(fromUser){
mPlayer.seekTo(progress);
mSeekBar.setProgress(progress);
}
}
});
Thread currentThread = new Thread(this);
currentThread.start();
}
@Override
public void run() {
// TODO Auto-generated method stub
try {
while(mPlayer != null){
int currentPosition = mPlayer.getCurrentPosition();
Message msg = new Message();
msg.what = currentPosition;
threadHandler.sendMessage(msg);
}
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private Handler threadHandler = new Handler(){
public void handleMessage(Message msg){
//super.handleMessage(msg);
//txt.setText(Integer.toString(msg.what));
mSeekBar.setProgress(msg.what);
}
};
}
分享到:
相关推荐
在Java代码中,我们可以通过`seekBar.setProgress(int progress)`方法来动态更新SeekBar的进度。同时,可以监听`SeekBar.OnSeekBarChangeListener`事件,当进度改变时触发相关操作: ```java seekBar....
在某些场景下,可能需要根据后台任务的执行进度动态更新Seekbar。这可以通过在异步任务的回调中调用`setProgress()`实现。 6. 无障碍服务支持: 对于无障碍环境,确保SeekBar的使用符合无障碍标准,如提供合适的...
4. **动态更新进度**:在某些场景下,我们可能需要根据其他因素动态更新 SeekBar 的进度。这可以通过调用 `SeekBar.setProgress(int)` 方法来实现,传入想要设置的新进度值。 5. **触摸反馈**:为了提供良好的用户...
5. **动态更新 SeekBar**:在某些场景下,我们可能需要根据程序的运行状态动态更新 SeekBar 的最大值或当前进度。这可以通过调用 `setMax(int max)` 和 `setProgress(int progress)` 方法实现。 6. **无障碍功能**...
本篇文章将详细讲解如何在Android应用中使用SeekBar,并实现动态显示进度以及使进度指示器随SeekBar一起移动的效果。 1. **SeekBar的基本使用** SeekBar是Android SDK中的一个继承自ProgressBar的组件。首先,在...
3. **动态更新 `TextView`**:将计算出的百分比显示在 `TextView` 中,并调整其位置,使其始终跟随 `SeekBar` 的进度条位置。 #### 二、源代码解析 下面是对给定源代码的关键部分进行的解析: ```java private ...
2. **进度更新**:在滑动过程中,会根据滑动的距离动态更新 SeekBar 的进度值,并调用 `setProgress` 方法。 3. **绘制逻辑**:源码中还会涉及 SeekBar 的绘制过程,包括进度条、thumb 的绘制,这通常在 `onDraw` ...
本文将深入探讨如何实现 SeekBar 的动态显示以及自动滚动功能。 首先,我们需要在布局文件中添加 SeekBar: ```xml <SeekBar android:id="@+id/seekBar" android:layout_width="match_parent" android:layout_...
- 若需显示当前进度,可以在SeekBar上方或下方添加一个TextView,实时更新其值。通过`SeekBar`的`getProgress()`方法获取当前进度,并将其显示出来。 - 也可以通过`setSecondaryProgress()`方法实现一个辅助进度条...
3. **动态更新UI**:在`onProgressChanged()`方法中,我们可以根据当前的进度值更新UI,比如改变TextView的文本内容,使之与SeekBar的进度同步。 ### TextView跟随Thumb移动 要实现TextView跟随Thumb移动的效果,...
本篇文章将深入探讨如何实现一个自定义的三滑块SeekBar,该SeekBar能够灵活地调整滑块数量,并且支持动态设置滑块的值。 首先,我们来理解SeekBar的基本概念。SeekBar是Android系统提供的一个UI组件,它允许用户...
这可能是指在布局文件中包含原生SeekBar后,在Activity或Fragment的`onCreate()`或`onViewCreated()`方法中,设置SeekBar的`jumpThreshold`属性为0,或者手动禁用`onProgressChanged()`回调,防止点击时直接更新进度...
最后,如果我们还需要更复杂的自定义,比如动态改变提示信息的位置或样式,可能需要在代码中进行更细致的处理。例如,我们可以使用PopupWindow来显示一个浮窗,实时展示滑动时的进度信息。这样,用户不仅可以直观地...
在Android开发中,SeekBar是一个非常常见的控件,用于让用户通过滑动来选择一个...开发者可以通过研究源码,学习到如何动态更新界面元素以及如何处理用户交互事件,这对于提升Android应用的用户体验设计能力大有裨益。
1. **添加自定义进度指示器**: 可以通过在 SeekBar 上覆盖一个自定义 View 来显示动态的进度指示,比如数字或百分比。 2. **增加触摸区域**: 默认 SeekBar 的可触摸区域只有滑块,但通过自定义布局,可以让用户在...
在这个特定的项目中,我们探讨的是如何将SeekBar与网络图片相结合,使图片随着SeekBars的thumb(滑块)滑动而动态显示,并始终保持在 SeekBar 的中间位置。我们将主要关注以下几个关键知识点: 1. **SeekBar的基本...
SeekBar根据这些事件更新进度,并调用`onProgressChanged()`回调通知监听器。 4. **滑动监听器**: SeekBar提供了OnSeekBarChangeListener接口,开发者可以实现该接口来监听滑动事件。包含三个方法:`...
在这个特定的场景中,我们利用SeekBar来实现动态调节字体颜色的功能,并且让背景颜色成为字体颜色的反色。这涉及到颜色处理、自定义SeekBar以及UI交互等多个知识点。 首先,我们需要理解颜色的基本概念。在Android...
在Seekbar滑动事件中,我们需要监听`OnSeekBarChangeListener`,并在`onProgressChanged()`方法中更新气泡的位置和显示的进度值。为了实现滑动时显示气泡,可以将这个布局作为一个浮动视图(FloatingView)添加到...