2017-08-28 64 views
-3

我知道在GitHub上有很多关于这个参数的堆栈溢出的问题。但是没有那些符合我的需求。在Android上绘制自定义Seekbar

我只需要画出这样的事情:

enter image description here

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

预先感谢您。

+0

我对Android比较陌生。我的问题出了什么问题?为什么它低调? –

+0

你有什么尝试?我们不是代码编写服务 –

+0

就像我说的,我对Android比较陌生。在尝试转换我在堆栈溢出中找到的某些东西后,我意识到如果没有我的具体情况帮助,我无法完成此任务。我很抱歉,我知道这是一个失去时间的问题。但我不得不问。 –

回答

0

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

此外,一个更简单的解决办法我能想到的是创建occupes整个宽度的长方形进度条,并在上面画上了中间,播放按钮

+0

我会试一试。谢谢 –

1

您可以使用类似于我所解释的here

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

当您更改路径时,您只需致电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次,将含有该栏的“补”的一个被限幅的I解释的方法以上。

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

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

如果将一个矩形和一个圆相加,然后删除一个圆(使用OP对路径进行加/减/相乘),您应该获得一个类似于手绘图中的路径(形状)。

祝你好运。