Ich versuche eine kreisförmige ListView mit Listenelementen zu erstellen, die auf Halbkreis angeordnet sind. es sollte ungefähr so aussehen:
Es gab einen zugehörigen Beitrag aber es war geschlossen.
Ich habe meine eigene kreisförmige benutzerdefinierte ListView erstellt und es funktioniert gut, aber mein Problem ist, dass ich List Items Half Circle Weise nicht anordnen kann, wie es auf dem Bild angezeigt wird. Ich habe mehrere Dinge ausprobiert war nutzlos, ich weiß nicht, wie es geht.
Also, als ich die Beispiel-App zu Demo gemacht habe, musste ich zwei Sachen machen.
Zuerst wurde die onDraw(Canvas)
in meiner benutzerdefinierten Ansicht bearbeitet. Dies kann jede Ansicht sein, ich mache es aus Gründen der Einfachheit zu einem TextView. Dies erlaubt mir, die Ansicht basierend auf einer Gleichung zu verschieben.
Als zweites musste ich die ListView-Klasse überschreiben, OnScrollListener implementieren und setOnScrollListener(this);
aufrufen. Jetzt kann ich durch die Liste blättern, es folgt der Gleichung, die ich in die Ansicht stelle.
Sie können die vollständige Quelle von meinem Gist herunterladen.
Ausgangszustand Scroll-Status
Wie Sie sehen können, ist meine Mathematik etwas daneben ... Ich benutze eine Parabel oder einen Kreis, also muss das geändert werden.
Sie können den linken Rand für jede im getView () Ihres Adapters zurückgegebene Ansicht vergrößern / verkleinern. So erhöhen Sie beispielsweise für die erste Hälfte Ihrer Ansichten den Rand für jedes Objekt um beispielsweise 20 Pixel (int margin = index * 20) und verringern es entsprechend für die zweite Hälfte der Ansichten.
Das erfordert viel Feinabstimmung, um wirklich wie eine kreisförmige Liste zu wirken, natürlich, aber ich denke, Sie haben die Idee.
Ich würde versuchen, wenn möglich ein vorhandenes radiales Menü-Widget zu verwenden. Dieser behauptet, ein halbrundes radiales Menü zu unterstützen. Ich bin mir nicht sicher, ob dies funktioniert oder nicht.
Nach etwas mehr glotzen fand ich eine Lösung.
Es ist relativ optimiert und konfigurierbar wie ein normales ListView.
Hier sind die wichtigsten Code-Schnipsel:
CircularListView.java
%Vor% Zur weiteren Klärung können Sie auch meinen Blogpost sehen und dazu kommentieren. Sie können Beispiel-App für Eclipse herunterladen.
Mein Blog ist:
Ссылка