【问题标题】:How to update textviews when seekbar is dragged拖动搜索栏时如何更新文本视图
【发布时间】:2018-07-31 01:16:16
【问题描述】:

在这里你可以看到我想要实现的目标

https://imgur.com/a/zEpWI

第一个gif是我现在拥有的,第二个是我想要的。

代码有效,但显示歌曲当前位置的文本视图仅在我停止拖动时更新,但我希望它在我拖动时更新。

查看我在链接中发布的 gif,以便您了解我想要实现的目标。

提前致谢,

文斯

updateProgressBar();当我换歌时调用

我的代码

private Runnable mUpdateTime = new Runnable() {
@Override
public void run() {
    long songCurrentTime = mediaPlayer.getCurrentPosition();
    long songTotalTime = mediaPlayer.getDuration();

    tvSongCurrentTime.setText(""+utilities.msToTimer(songCurrentTime));
    tvSongTotalTime.setText(""+utilities.msToTimer(songTotalTime));

    int progress = (int)(utilities.getProgressPercentage(songCurrentTime, songTotalTime));
    seekBar.setProgress(progress);

    mHandler.postDelayed(this, 100);
}
};

  public void updateProgressBar(){
     mHandler.postDelayed(mUpdateTime, 100);
}

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

} 

@Override
public void onStartTrackingTouch(SeekBar seekBar) {
    mHandler.removeCallbacks(mUpdateTime);
}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {
    mHandler.removeCallbacks(mUpdateTime);
    int songTotalTime = mediaPlayer.getDuration() ;
    int currentPosition = utilities.progressToTimer(seekBar.getProgress(), 
    songTotalTime);

    mediaPlayer.seekTo(currentPosition);
    updateProgressBar();
}

【问题讨论】:

标签: java android listener runnable android-seekbar


【解决方案1】:

您应该在“onProgressChanged”方法中执行此操作。像这样:

@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean 
    fromUser) {
    if(fromUser)
        //myTextView.setText("" + progress);
        updateProgressBar();
} 

【讨论】:

    【解决方案2】:

    按照下面的代码。它可能会帮助你。

    final TextView sometextview=findViewById(R.id.someid);//your textview
    sometextview.setText("Hello Android");        
    
            final SeekBar seekbar=(SeekBar) findViewById(R.id.someseekbar);   //your seekbar  
            seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { //listener for your seekbar      
    
            @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      
    
                sometextview.setTextSize(progress+"%");//Here is the textview with the progress number.
    
            }       
        });
    

    【讨论】:

      【解决方案3】:

      只是您项目中的代码是错误的方法,请参见下面剪切并粘贴正确方法中的代码...在onProgressChanged方法中编写代码

      @Override
      public void onProgressChanged(SeekBar seekBar, int progress, boolean 
      fromUser) {
      
      int songTotalTime = mediaPlayer.getDuration() ;
          int currentPosition = utilities.progressToTimer(seekBar.getProgress(), 
          songTotalTime);
      
          mediaPlayer.seekTo(currentPosition);
          updateProgressBar();
      
      } 
      
      @Override
      public void onStartTrackingTouch(SeekBar seekBar) {
          mHandler.removeCallbacks(mUpdateTime);
      }
      
      @Override
      public void onStopTrackingTouch(SeekBar seekBar) {
          mHandler.removeCallbacks(mUpdateTime);
      
      }
      

      【讨论】:

        猜你喜欢
        • 2011-09-11
        • 1970-01-01
        • 1970-01-01
        • 2013-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-29
        • 1970-01-01
        相关资源
        最近更新 更多