在Android上绘制自定义Seekbar

时间:2017-08-28 22:50:57

标签: android android-mediaplayer seekbar android-seekbar

我知道在GitHub上有很多关于它的库以及有关此参数的堆栈溢出的几个问题。但这些都不符合我的需求。

我只需要画出这样的东西:

enter image description here

进度线必须是黄色且没有拇指。

提前谢谢。

2 个答案:

答案 0 :(得分:1)

您可以使用与我解释here类似的内容。

只需使用矩形而不是圆形。使用on-size更改来计算矩形的实际大小,并有一个方法来更改百分比并重新计算矩形大小/重新创建路径。

当您更改路径时,您只需调用invalidate()即可重新绘制。

伪代码:

public void setProgress(float progress) {
    this.progress = progress;
    refreshProgressBar();
}

@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    super.onSizeChanged(w, h, oldw, oldh);
    this.currentW = w;
    this.currentH = h;
    refreshProgressBar();
}

private void refreshProgressBar() {
    path.reset();
    // build your clipping path using progress / currentW / currentH
    path.close();
    invalidate();
}

您可以使用单个自定义视图执行所有操作,也可以将2个视图放在一起,其中包含" fill"用我上面解释的方法修剪条形图。

请记住剪辑发生在画布上。因此,如果您使用自定义视图,则在绘制进度视图之前设置剪切并在完成后将其删除(在这种情况下您也可以直接绘制颜色 - 但如果您有复杂的颜色模式,则可能更容易剪切)。如果您使用剪辑ViewGroup,就像我给您的链接一样,您必须相应地构建您的布局,以便剪切的视图只是进度视图。

如果你玩数学,你也可以绘制一个符合你的艺术作品的路径,并在你的布局顶部的全彩色矩形上使用它。

如果你将一个矩形和一个圆圈加在一起,然后删除一个圆圈(使用OP在路径上添加/减去/乘法)你应该获得一个类似于你手中的路径(形状) -drawing。

祝你好运。

答案 1 :(得分:0)

您应该为此创建一个视图。 看看Android creating custom view

此外,我能想到的一个更简单的解决方案是创建一个矩形进度条,它占据整个宽度并在中间顶部绘制,播放按钮