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