gpt4 book ai didi

android - SeekBar 不更新 Android

转载 作者:太空宇宙 更新时间:2023-11-03 12:32:35 25 4
gpt4 key购买 nike

我的 ListView 项中有一个 SeekBar。并为每个项目一首歌。播放歌曲时,我希望 SeekBar 更新和/或控制 MediaPlayerSeekBar 的进度。到目前为止,我只是通过拖动拇指来控制 MediaPlayer 进度。问题是,我无法让它更新 SeekBar Thumb 位置。

这是我的代码:

    Ids holder;
private final Utils utils = new Utils();
private final Handler handler = new Handler();
long totalDuration;
long currentPosition;

...

holder.seekbar.setMax(100);
holder.seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

@Override
public void onStopTrackingTouch(SeekBar seekBar) {

handler.removeCallbacks(updateTimeProgressBar);
int fullDuration = Item.mp.getDuration();
int currentPosition = utils.progressToTimer(
seekBar.getProgress(), fullDuration);
Item.mp.seekTo(currentPosition);
updateProgressBar();
}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {
handler.removeCallbacks(updateTimeProgressBar);

}

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {

}
});

holder.seekbar.setFocusable(true);
holder.seekbar.setEnabled(true);
holder.seekbar.setTag(position);

...播放文件

Item.mp = MediaPlayer.create(context,
Integer.valueOf(this.songPos[songPosInt]).intValue());
Item.mp.start();
holder.seekbar.setProgress(0);
updateProgressBar();

最后更新SeekBar的代码

public void updateProgressBar() {
handler.postDelayed(updateTimeProgressBar, 1000);

}

private final Runnable updateTimeProgressBar = new Runnable() {
@Override
public void run() {
if (Item.isPlaying == true && pausedSamePos == false) {
currentPosition = Item.mp.getCurrentPosition();
totalDuration = mp.getDuration();
int currentTime = (utils.getProgressPercentage(totalDuration,
currentPosition));
holder.seekbar.setProgress(currentTime);
Log.i("CALLED", "SHOULD BE UPDATED " + currentPosition
+ "of total" + totalDuration);
handler.postDelayed(this, 1000);

}
}
};

Utils 是一个将 MS 转换为 SEC 的简单辅助类我也试过

int totalDuration=mp.getDuration() /1000;
holder.seekbar.setMax(totalduration);
..
int currentPosition=mp.getCurrentPosition()/1000;
holder.seekbar.setProgress(currentPosition);

搜索栏

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_frame3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" >

<SeekBar
android:id="@+id/seekbar"
android:layout_width="0.0dip"
android:layout_height="wrap_content"
android:layout_weight="1.0"
android:paddingLeft="5.0dip"
android:paddingRight="5.0dip"
android:progressDrawable="@drawable/seekbar_line"
android:thumb="@drawable/seekbar_thumb" />

<TextView
android:id="@+id/textview_duration_sb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="10.0dip"
android:text="00:05"
android:textAppearance="?android:textAppearanceSmall"
android:textColor="#8C000000" />

</LinearLayout>

在我的 ListView View 中

 <FrameLayout
android:id="@+id/main_frame2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5.0dip" >

<TextView
android:id="@+id/textview_duration"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:focusable="false"
android:text="00:05"
android:textColor="#8C000000"
android:textSize="14.0sp" />

<include layout="@layout/play_item" />
</FrameLayout>

最佳答案

问题是,错误的 SeekBar 正在更新。因此,只需在 clickListener 中添加 SeekBar 监听器和 runnable 即可。同时扩展基础适配器并获取项目 ID。

关于android - SeekBar 不更新 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29140572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com