2016-04-01 31 views
0

Üzerinde bölmeler bulunan dikey ilerleme çubuğu yapmak istiyorum. ancak bunu yapamam. Bu kod yatay ilerleme çubuğu için iyi çalışıyor, ancak dikey ilerleme çubuğu gibi çalışmak istediğinizde işe yaramıyor. enter image description herebölücü ile dikey ilerleme çubuğu nasıl yapılır

Herhangi bir yardım için teşekkür ederiz.

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

yüzden x <-> y değerlerini alışverişi ile sorun nedir? Bir çalışma kodunuz var, bu yüzden sadece koordinatları değiştirin, "draw" yönteminde sadece ** dört ** satır var ... – pskink

+0

Onu değiştirdim, ama – abh22ishek

+0

'u değil, 4 satırı değiştireceksin. herhangi bir şey eklemek – pskink

cevap

0

Ben onun geç biliyorum ama birisi arıyor istiyorsanız, buradan görebilirsiniz

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

Bu sınıf ilerleme çubuğu ile nasıl kullanılır? – Jatin