2012-02-06 11 views
2

プログレスバーを円弧状に作成する必要があります。そのためのカスタムビューを作成する必要がありますか?またはonDraw() ProgressBarクラスのメソッドの助けを借りて私はこのことを実行できますか?私はまた、このプログレスバーに温度計のようなマーカーを追加したい。どうか私に提案してください。ありがとう。このようなアンドロイドで円弧状のプログレスバーを作成することはできますか?

何か:

protected synchronized void onDraw(Canvas canvas) { 

    int progress = this.getProgress(); 
    int maxProgress = this.getMax(); 

    //calc the progress to angles 
    float angleProgress = progress * 360/maxProgress; 

    //create and set the arc paint 
    Paint arcPaint = new Paint(); 
    arcPaint.setColor(0xff800000); 
    arcPaint.setAntiAlias(true); 
    arcPaint.setStyle(Style.FILL); 

    Rect arcRect = new Rect(); this.getDrawingRect(arcRect); 
    canvas.drawArc(new RectF(arcRect), -90, angleProgress,true, arcPaint); 
} 

refのチェックのために、この画像の円弧状のプログレスバー http://i.stack.imgur.com/FY0dq.png

+0

このようなもの:http://phrogz.net/tmp/canvas_gauge.html Javascriptで書かれていますが、HTML5キャンバスを使用しています。それが似ていれば、そのソースを見てウィジェットを描画する方法をよく理解できます。 – Jonathan

答えて

1

デフォルトのProgressBarウィジェットでもこれより大幅に少ない野心的な変化のために、簡単にカスタマイズできません。私の意見では、最小値、最大値、現在値のキャリヤーとしての行動以外は、この文脈では貴重な行動を提供しません。また、「不確定」状態などの望ましくない機能ももたらします。

onDraw()をそのまま使用して、onMeasure()を表示して実装してカスタムビューを作成します。

関連する問題