2012-06-07 7 views
7

私は、Androidアプリケーションを構築していると私は非常に多くの全く完全に明白な解決策は限り私ができるようにありませんセグメント化されたプログレスバーを作成する最も良い方法は?

MIUI File Explorer App

ファイルエクスプローラMIUIの下部に見られるもののようなプログレスバーを作成したいです教えてください。 は、これまでのところ私は考えることができるものを互いに

  • の上に透明な背景を持つ多くのプログレスバーを重ねる

    • はonDrawメソッドに

    を複数の値を取り、書き換えるためにプログレスバークラスを拡張しています私は最初の選択肢がはるかに遅く、非効率であると思うが、2番目の選択肢は過度に複雑かもしれないが、間違いなく良い解決策である。

    これについてもっと良い方法はありますか?

  • 答えて

    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

    1つのオプションは、従来のプログレスバーにしないことです。私の個人的なアプリケーションの1つでは、さまざまな色のセグメントを持つ円形のプログレスバーに似た表示が必要でした。

    音楽の色で0Bから14.9GBの塗りつぶされた四角形を描くことから始めましょう。ビデオ用の色は939MBから14.9GB、写真用の色は3.52GBから14.9GBまでですに。

    これで、丸みのある端を背景色でマスクとして描くことができます。

    これは、グラフィックスプリミティブを描画しているだけなので、かなり速く、必要なだけ拡張することができます。

    ごくわずかな欠点は、ロジックの多くを自分で実装しなければならないことですが、それは私の意見ではお金を払うには小さな値段です。

    -1

    親愛なる例APIデモのAndroidデベロッパーのSKD 2.2を表示 - >進捗バー - >インクリメンタルな問題の解決方法をご覧ください。

    +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

    このリンクは質問に答えるかもしれませんが、回答の重要な部分をここに含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューの投稿](レビュー/低品質の投稿/ 11036312) –

    +0

    @JohnHascallそれを強調してくれてありがとう。私は必須情報を含めるように答えを更新しました。 – muneikh

    関連する問題