2017-08-28 131 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對路徑進行加/減/相乘),您應該獲得一個類似於手繪圖中的路徑(形狀)。

祝你好運。