Möglich zu tun abgerundeten Ecken in benutzerdefinierten Progressbar-progressDrawable?
Habe ich einen Fortschrittsbalken, der soll Aussehen wie das angehängte Bild:
Und ich habe es ein langer Weg. Ich bin sehr nahe das einzige Teil, das nicht funktioniert, ist die abgerundete Ecken für die progressDrawable. Hier ist, was mir aussieht. (Beachten Sie, eingekreist in rot, dass die Füllung im inneren der weiße Rahmen nicht an den Ecken abgerundet):
So, ich habe gefunden ein paar Möglichkeiten, um diese Arbeit zu machen, wenn der Fortschrittsbalken ist gefärbt mit einer Form, Farbverlauf oder Farbe. ABER, ich kann es nicht wieder mit einem Bild als die progressDrawable.
Hier ist meine Klasse, die Sie erweitert ProgressBar
public class RoundedProgressBar extends ProgressBar{
private Paint paint;
public RoundedProgressBar(Context context) {
super(context);
setup();
}
public RoundedProgressBar(Context context, AttributeSet attrs) {
super(context, attrs);
setup();
}
public RoundedProgressBar(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setup(); ;
}
protected void setup()
{
paint = new Paint();
}
@Override
protected synchronized void onDraw(Canvas canvas) {
//First draw the regular progress bar, then custom draw our text
super.onDraw(canvas);
paint.setColor(Color.WHITE);
paint.setStyle(Paint.Style.STROKE);
RectF r = new RectF(0,0,getWidth()-1,getHeight()-1);
canvas.drawRoundRect(r,getHeight()/2,getHeight()/2, paint);
}
}
Hier ist meine Auswahl:
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android"
>
<item
android:id="@android:id/background"
android:drawable="@drawable/slider_track" />
<item
android:id="@android:id/secondaryProgress"
android:drawable="@drawable/slider_track" />
<item
android:id="@android:id/progress"
android:drawable="@drawable/slider_track_progress" />
</layer-list>
Hier sind die Bilder in der Auswahl:
slider_track->
slider_track_progress->
Hier ist, wo ich einbetten meine progressbar in das layout für meine Tätigkeit
<com.android.component.RoundedProgressBar
android:id="@+id/player_hp_bar"
android:layout_width="fill_parent"
android:layout_height="36dip"
android:layout_marginLeft="30dip"
android:layout_marginRight="30dip"
android:max="100"
style="?android:attr/progressBarStyleHorizontal"
android:progressDrawable="@drawable/slider_layer_list"
android:progress="20"
android:maxHeight="12dip"
android:minHeight="12dip"
/>
Weiss jemand wie man diese Arbeit zu machen?
- Habe ich es herausgefunden und habe einen Beitrag hier drauf: blog post
- stackoverflow.com/questions/8939715/...
- Ich stellte eine aktualisierte Antwort auf eine ähnliche Frage hier: stackoverflow.com/questions/2078809/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht sicher, ob man wirklich Runden der Kanten, über API, aber Sie könnte sehr leicht fügen Sie eine neue Ebene zwischen Ihrem weißen Umriss, und Ihre tatsächlichen Fortschritte Objekt? Die Schicht könnte eine genaue Ausschnitt der weißen Umriss, und damit der Fortschrittsbalken würde nicht zeigen, die außerhalb der Kontur.
Versuchen, diese , Sie vielleicht in der Lage, das zu tun, was Sie wollen, ändern Sie die Farbe und die Breite und Höhe des Daumens und die seekbar-Komponente in der xml.
sehen Sie das Bild hier
Diese sulotion war die einzige Art, wie ich dies tun könnte.
Hoffe, diese Hilfe
dies ist mein seekbar :
dies ist (progress_background.xml) :
- und dies ist der Daumen (oval_seekbar_thumb.xml) :
Die Höhe der Daumen sollte gleich sein wie die Höhe der seekbar-Komponente, richtig zu suchen.