2016-04-01 8 views
0

仕切りで垂直方向の進行バーを作りたいと思います。しかし、私はそうすることができません。 このコードは水平方向の進行状況バーでうまく動作しますが、垂直方向の進行状況バーのように動作させたい場合、動作しません。 enter image description here仕切りで垂直方向のプログレスバーを作る方法

助けてください。

class ProgressDrawable extends Drawable { 
private static final int NUM_RECTS = 10; 
Paint mPaint = new Paint(); 

@Override 
protected boolean onLevelChange(int level) { 
    invalidateSelf(); 
    return true; 
} 

@Override 
public void draw(Canvas canvas) { 
    int level = getLevel(); 
    Rect b = getBounds(); 
    float height = b.height(); 
    for (int i = 0; i < NUM_RECTS; i++) { 
     float bottom = height * i/NUM_RECTS; 
     float top = bottom + 0.9f * height/NUM_RECTS; 
     mPaint.setColor((i + 1) * 10000/NUM_RECTS <= level? 0xff888888 : 0xffbbbbbb); 
     // canvas.drawRect(left, b.top, right, b.bottom, mPaint); 

     //canvas.drawRect(left, b.top, right, b.bottom, mPaint); 
     canvas.drawRect(bottom, b.bottom, top, b.top, mPaint); 
    } 
} 

@Override 
public void setAlpha(int alpha) { 
} 

@Override 
public void setColorFilter(ColorFilter cf) { 
} 

@Override 
public int getOpacity() { 
    return PixelFormat.TRANSLUCENT; 
} 

}

+0

見ることができるので、X <-> yの値を交換すると問題は何ですか?あなたは実用的なコードを持っているので、座標を交換するだけです**描画メソッドで変更する**ライン**が4つあります... – pskink

+0

私はそれを変更しましたが、それは消えて – abh22ishek

+0

4行を変更する何かを追加してください – pskink

答えて

0

私はその後半を知っている、誰かがそれを探したい場合は、ここで

private static final int NUM_RECTS = 10; 
    Paint mPaint = new Paint(); 


    @Override 
    public void draw(Canvas canvas) { 
     // TODO Auto-generated method stub 
     int level = getLevel();// It will give the level of progress(0 to 10,000) 

     Rect b = getBounds(); 
     float height = b.height(); 
     float width=b.width(); 
     float x=40; 
     float y=0; 
     for (int i =0; i<NUM_RECTS; i++) { 


     if((i+1)*10000/NUM_RECTS>level) 
      { 
       mPaint.setColor(Color.GRAY); 
      }else{ 
       mPaint.setColor(Color.GREEN); 
      } 


     canvas.drawRect(0,height-x,width,height-y, mPaint); 
      //canvas.drawCircle(width/2,height-y,30, mPaint); 

      x=x+50; 
      y=y+50; 
     } 

     } 

    @Override 
    public void setAlpha(int alpha) { 

    } 

    @Override 
    public void setColorFilter(ColorFilter colorFilter) { 

    } 

    @Override 
    public int getOpacity() { 
     return PixelFormat.TRANSLUCENT; 
    } 


    @Override 
    protected boolean onLevelChange(int level) { 
     invalidateSelf(); 
     return true; 
    } 

} 
+0

プログレスバーでこのクラスを使用するには? – Jatin

関連する問題