2012-06-07 22 views
7

我建立一個Android應用程序,我想創建一個進度條,非常喜歡什麼在MIUI的底部看到文件瀏覽器創建分段進度條的最佳方法?

MIUI File Explorer App

沒有完全明顯的解決方案,盡我所能告訴。 到目前爲止,我能想到的是

  • 分層許多進度條上一個頂部透明背景的另一
  • 擴展進度條類採取多個值和重寫的onDraw方法

我認爲第一種方案太慢而且效率低下,但第二種方案可能過於複雜,但絕對是更好的解決方案。

有沒有更好的方法來解決這個問題?

回答

6

你應該爲它定製一個視圖。例如:

final Paint blue = new Paint(); 
blue.setColor(Color.BLUE); 

View progressBar = new View(getActivity()){ 

     protected void onDraw(android.graphics.Canvas canvas) { 

      canvas.drawRect(0,0,getWidth()*progressPecentFirst,getHeight(),blue); 
      blue.setColor(Color.RED); 
      canvas.drawRect(0,0,getWidth()*progressPecentSecond,getHeight(),blue); 
      //Repeat this 
     }; 
    }; 
parentLayout.addView(progressBar); 
1

一種選擇是根本不讓它成爲傳統的進度條。在我的一個個人應用程序中,我需要一個類似於具有不同顏色段的圓形進度條的顯示。

我可以建議你從0B到14.9GB的填充矩形開始,在音樂的顏色中,從939MB到14.9GB的視頻顏色,從3.52GB到14.9GB的圖片顏色等等上。

然後,您可以將背景顏色的圓角端作爲蒙版。

這將會非常快,因爲您只是繪製圖形基元,並且可以根據需要對其進行擴展。

唯一的一個小缺點就是你不得不自己實現大部分邏輯,但這在我看來是一個小的代價。

-1

親愛的請參閱示例中的內置API演示的android SKD 2.2在api demo中去查看 - >進度條 - >增量然後你看到你的問題的解決方案。

+0

標準進度條被嚴格限制爲2段。 –

0

這是根據@Zelleriation答案分段的進度條。進度條。

SegmentedProgressBar progressBar = (SegmentedProgressBar) findViewById(R.id.segmentedProgressBar); 
    progressBar.setProgressColor(Color.BLACK); 
    progressBar.publishProgress(0.5f); 

    <com.muneikh.SegmentedProgressBar 
    android:id="@+id/segmentedProgressBar" 
    android:layout_width="match_parent" /> 

https://github.com/muneikh/SegmentedProgressBar

enter image description here

+0

儘管這個鏈接可能回答這個問題,但最好在這裏包含答案的重要部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/11036312) –

+0

@JohnHascall謝謝你的強調。我已經更新了答案以包含重要信息。 – muneikh