2012-02-06 2 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); 
} 

심판 체크 본 이미지는 아크 모양의 ProgressBar http://i.stack.imgur.com/FY0dq.png

+0

다음과 같은 것은 어떨까요 : http://phrogz.net/tmp/canvas_gauge.html 자바 스크립트로 작성되었지만 HTML5 캔버스를 사용합니다. 비슷한 경우 소스를보고 위젯을 그리는 방법을 잘 이해할 수 있습니다. – Jonathan

답변

1

기본의 ProgressBar 위젯도 이것보다 훨씬 적은 야심 찬 변화를 쉽게 사용자 정의 할 수 없습니다. 제 생각에는 최소, 최대 및 현재 값에 대한 이동 통신사 역할을하는 것 이외에는 이러한 맥락에서 귀중한 행동을 제공하지 않습니다. 또한 '불확정'상태와 같은 원치 않는 기능을 제공합니다.

onDraw()보기 및 구현 - 사용자 - 및 onMeasure()를 확장하여 사용자 정의보기를 만듭니다.

관련 문제