2015-08-06 10 views
9

Aby narysować kółka i wykresy kołowe w Androidzie, możemy użyć struktury Android AChartEngine, jak pokazano here.Rysuj okrąg wypełniony poziomo w Androidzie

Jak jednak rysować kręgi częściowo wypełnione poziomo (lub pionowo) w systemie Android? Mam na myśli kółka, które są wypełnione, na przykład, od dołu do góry zgodnie z procentem określonym w kodzie Java.

Oto zapowiedź tego, co nam potrzebne:

Preview

+3

mam Przykładem jeden sposób to zrobić w [moja odpowiedź tutaj] (http://stackoverflow.com/questions/24858531/filling-a-cir-gradually- from-bottom-to-top-android). Właściwie na dwa sposoby, jeśli sprawdzisz historię zmian dla pierwszego wpisu. Moja początkowa odpowiedź działa jednak tylko w API 19 i wyżej. –

+1

Twoja odpowiedź jest lepsza i taka prosta (jedna klasa narzędziowa). Dziękuję @MikeM. – Omar

Odpowiedz

7

Spróbuj lib Circle Progress.
Oto próbka od autora lib za:

<com.github.lzyzsd.circleprogress.CircleProgress 
    android:id="@+id/circle_progress" 
    android:layout_marginLeft="50dp" 
    android:layout_width="100dp" 
    android:layout_height="100dp" 
    custom:circle_progress="20"/> 

circle

+0

Mam trudności z zaimplementowaniem i uruchomieniem tej biblioteki/kodu. Ta biblioteka jest jednak szczegółowa i zapewnia wiele sposobów tworzenia formularzy w systemie Android. Dziękuję @Minhtdh. – Omar

0

Extend Drawable i pozwól metoda draw wyglądać następująco:

public void draw(Canvas c) { 
    float size = ...; // The size of your circle 
    Paint color = new Paint(); 
    color.setColor(...); // Color of your circle 
    c.drawCircle(size/2, size/2, size/2, color); 
    Path p = new Path(); 
    float ratio = ...; // How many of the circle you want to have filled 
    float offset = size * (float) Math.sqrt(1-((double) (0.5-ratio) * 2)*((double) (0.5-ratio) * 2))/2; 
    float angle = (float) Math.asin((double) (0.5-ratio) * 2); 
    p.addArc(offset, size * (1-percent), size - offset, size, angle, Math.PI - angle); 
    p.close(); 
    c.drawPath(p, color); 
}