You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在onStopTrackingTouch中获取onProgressChanged的int progress值并判断?

解决SeekBar在onStopTrackingTouch中获取progress值的问题

别担心,这个问题其实很好解决——核心就是把progress变量的作用域从onProgressChanged方法内部提升到类的成员变量级别,这样两个回调方法都能访问到它。

具体步骤如下:

  1. 在你的Activity/Fragment或者自定义SeekBar所在的类中,声明一个成员变量来保存当前进度:
private int mSeekBarProgress = 0; // 可以根据需求设置合适的默认值
  1. 在onProgressChanged方法里,把每次变化的progress值赋值给这个成员变量:
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    // 将局部的progress同步到成员变量中
    mSeekBarProgress = progress;
    
    // 你原本在这个方法里的其他业务逻辑可以正常保留
}
  1. 现在在onStopTrackingTouch方法里,就可以直接使用这个成员变量来编写你的if判断逻辑了:
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
    // 直接用成员变量mSeekBarProgress做判断
    if (mSeekBarProgress < 30) {
        // 进度小于30时执行的逻辑
    } else if (mSeekBarProgress >= 30 && mSeekBarProgress < 70) {
        // 进度在30-70区间时执行的逻辑
    } else {
        // 进度大于等于70时执行的逻辑
    }
}

如果你的页面里有多个SeekBar,还可以通过seekBar.getId()或者给SeekBar设置setTag()来区分不同的进度值:比如声明多个成员变量mMusicProgress、mVolumeProgress,或者用一个HashMap来存储不同SeekBar对应的进度数据。

这样就能完美解决你在onStopTrackingTouch中获取进度值的需求啦!

内容的提问来源于stack exchange,提问作者Rogeres Oliveira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:18:09