实现“android SeekBar不让拖动”的方法可以分为以下几个步骤:

  1. 创建一个自定义的 SeekBar 控件。
  2. 重写 onTouchEvent 方法,拦截触摸事件。
  3. 在拦截触摸事件的逻辑中,判断是否允许拖动 SeekBar。
  4. 如果不允许拖动,则直接返回 true,否则交给父类处理。

下面是具体的实现步骤和代码:

1. 创建一个自定义的 SeekBar 控件

首先,我们需要创建一个自定义的 SeekBar 控件,继承自 Android 原生的 SeekBar 控件。代码如下:

public class CustomSeekBar extends SeekBar {

    public CustomSeekBar(Context context) {
        super(context);
    }

    public CustomSeekBar(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomSeekBar(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
}

2. 重写 onTouchEvent 方法,拦截触摸事件

在自定义的 SeekBar 控件中,重写 onTouchEvent 方法,拦截触摸事件。代码如下:

@Override
public boolean onTouchEvent(MotionEvent event) {
    if (!isDraggable()) {
        return true;
    }
    return super.onTouchEvent(event);
}

3. 判断是否允许拖动 SeekBar

在拦截触摸事件的逻辑中,我们可以通过一个 boolean 类型的变量来判断是否允许拖动 SeekBar。如果不允许拖动,我们直接返回 true,否则交给父类处理。代码如下:

private boolean mDraggable = true;

public void setDraggable(boolean draggable) {
    mDraggable = draggable;
}

public boolean isDraggable() {
    return mDraggable;
}

4. 使用自定义的 SeekBar 控件

在使用自定义的 SeekBar 控件时,我们可以通过调用 setDraggable 方法来设置是否允许拖动 SeekBar。代码如下:

CustomSeekBar seekBar = findViewById(R.id.custom_seek_bar);
seekBar.setDraggable(false);

这样,当设置了不允许拖动的时候,用户就无法通过触摸来改变 SeekBar 的进度了。

下面是关系图和类图的展示:

erDiagram
    SeekBar ||--|{ CustomSeekBar : extends
    CustomSeekBar ||--|{ MainActivity : uses
classDiagram
    SeekBar <|-- CustomSeekBar
    CustomSeekBar <-- MainActivity

通过以上的步骤和代码,我们就实现了“android SeekBar不让拖动”的功能。希望这篇文章能帮助到刚入行的小白开发者!