Wie Sie programmgesteuert erstellen oder ändern Sie ein drawable aus Linien in verschiedenen Farben
Habe ich zum zeichnen eines 3dp-Linie zur Darstellung einer Ebene Abschluss in einem quizz-Spiel.
Diese Linie muß von 2 Farben. Zum Beispiel, wenn der Benutzer abgeschlossen hat, 40% der Ebene, die Linie wird rot für die ersten 40% von der Linie, die anderen 60% Grau.
Ich habe es geschafft, das zu tun, mit einem drawable :
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="line" >
<size android:height="3dp" android:width="40dp"/>
<stroke
android:width="1dp"
android:color="#FFFC10" />
</shape>
</item>
<item android:left="40dp">
<shape android:shape="line" >
<size android:height="3dp" android:width="60dp" />
<stroke
android:width="1dp"
android:color="#DDDDDD" />
</shape>
</item>
</layer-list>
Und dann zeige ich es mit einer Bildansicht :
<ImageView
android:id="@+id/row_completion_bar"
android:src="@drawable/completion_bar"
android:layout_width="100dp"
android:layout_height="3dp" />
... aber jetzt muss ich natürlich in der Lage sein, dies zu ändern, 40%/60% der ration abhängig von den jeweiligen Benutzer-Abschluss.
Erste Frage: was ist die beste, die effizienteste Weg, es zu tun ? Ändern Sie den drawable zur Laufzeit ? oder erstellen Sie ein neues drawable zur Laufzeit in Java ?
Zweite Frage: wie ist es zu tun ? Ich habe beide Wege ausprobiert (neu dieses drawable in java-code /alter der drawable xml zur Laufzeit) und leider nicht gelungen 🙁
Jede Hilfe wird sehr geschätzt.
Danke für deine Antwort. Wie machen Sie das genau?
nur überschreiben alle Drawable - abstrakte Methoden - draw(Canvas), insbesondere
Schließlich fand ich einen einfacheren Weg, es zu tun mit ImageViews Hintergrundfarben und ein relative layout. Ich kann nicht die Lösung posten jetzt, weil ich nicht genug Ruf, um Antwort auf meine eigene Frage, bevor 8Stunden. Wird tun, sobald ich kann.
InformationsquelleAutor Stéphane | 2013-07-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
also das ist ein custom Drawable, die Sie verwenden können:
und den test-code:
InformationsquelleAutor pskink
Wie wäre es mit einem progress-bar? Der Stil des tun-und zu-tun können Marker gesetzt werden, entweder programmgesteuert oder über xml-Dateien.
Ihr code wird auch lesbarer/wartbarer, weil Sie mit der rechten widget für den job. Ihr layout enthält:
Aktualisieren können Sie die bar von Ihrem code verwenden z.B.:
Diesem Beispiel überschreibt der style der bar (wie geleitet, durch die progressDrawable Attribut), mit einem res/drawable/progress_bar.xml Datei - Inhalt unten. Hat man dieses extra-Nettigkeiten wie Farbverlauf, Schattierung und abgerundeten Ecken, die passen wie Sie sehen, passen:
Kredit http://www.tiemenschut.com/how-to-customize-android-progress-bars/, das gibt viel mehr detail auf, wie gestalte Fortschrittsbalken.
InformationsquelleAutor Geoff
Habe ich einen Weg gefunden, dies zu tun. Weiß nicht, ob es der effizienteste Weg, aber hier ist es:
Verwendete ich ein RelativeLayout zu überlagern ImageViews mit der Hintergrundfarbe.
in layout.xml:
in styles.xml:
in der java-Datei:
InformationsquelleAutor Stéphane
Diesem snippet wird die Arbeit für alle api -
Verwenden:
InformationsquelleAutor Ronit kadwane