7

Jestem nowy w Androidzie. Próbuję narysować ten obraz (statystyki meczów) enter image description here i wypełnij obraz kolorem od 10% do 100%. Próbowałem to dużo i jest to obraz enter image description hereKorzystanie z płótna i bitmapy w systemie Android, jak uzyskać ten obraz?

jest to kod

public class DrawView extends View { 
Paint paint = new Paint(); 

public DrawView(Context context) { 
    super(context); 
} 

@Override 
public void onDraw(Canvas canvas) { 
    paint.setColor(Color.BLACK); 
    paint.setStrokeWidth(3); 
    canvas.drawRect(30, 30, 100, 100, paint); 
    paint.setStrokeWidth(0); 
    paint.setColor(Color.GRAY); 
    canvas.drawRect(33, 60, 97, 97, paint); 
    paint.setColor(Color.WHITE); 
    canvas.drawRect(33, 33, 97, 60, paint); 

} 

Wszelkie sugestie będą bardzo pomocne dla mnie. Z góry dzięki.

+0

http://stackoverflow.com/questions/4918079/android-drawing-a-canvas-to-an-imageview –

+0

Czy nazwali 'invalidate()' funkcja po kliknięciu na stanowisku? –

+0

nie, jak mogę to nazwać? –

Odpowiedz

11

Przygotowałbym dwa obrazy - całkowicie wypełnione i niezapełnione (tylko kreska). Mając to należy je wkładać w obu Bitmap elementów, a następnie wyciągnąć tak:

float fillProgress = 0.1f; // let's say image is 10% filled 

canvas.drawBitmap(onlyStroke, 0f, 0f, null); // draw just stroke first 

canvas.save(); 
canvas.clipRect(
    0f,          // left 
    getHeight() - fillProgress * getHeight(), // top 
    getWidth(),        // right 
    getHeight()        // bottom 
); 
canvas.drawBitmap(filled, 0f, 0f, null);  // region of filled image specified by clipRect will now be drawn on top of onlyStroke image 
canvas.restore(); 

Użycie dwóch obrazów opisane i wypełniona np poniżej.

enter image description here enter image description here

Powyższy kod wykonuje następujące operacje:

  1. draw kontur.
  2. zastosuj obszar przycinania (przycinania).
  3. narysuj wypełniony kształt z zastosowanym przycięciem.
  4. usunąć klip, obraz zgodnie z potrzebami.

enter image description here

Stosując różne rozmiary klip, można uzyskać% wypełnienia wymagają. na przykład

enter image description here

+2

Myślę, że niektóre przykłady, aby pokazać, jak te dwa obrazy mogłyby się połączyć, pomogłyby. To dobry sposób na zrobienie tego, ale myślę, że wizualizacja wyjaśniłaby to lepiej. (+1) – Doomsknight

+1

@Doomsknight lepiej? –

+0

Jak umieścić tekst w środku, pokazując ilość wypełnionego%. –