Für die Anwendung, an der ich gerade arbeite, habe ich etwas wie ImageSwitcher
für mehrere Bilder erstellt (stell dir vor iPhone's UIScrollView
mit aktiviertem Paging).Optimieren von Paging zwischen ImageViews in Android?
Zuerst habe ich einige ImageViews
fest codiert und ihre zeichnbaren Ressourcen auf Erstellung/Inflation geladen, aber nach einigen Verbesserungen (und was ich dachte, Verbesserungen waren), reduzierte ich die benötigten Ansichten auf 3, von denen 2 für ImageViews
verwendet werden Anzeige der aktuellen Seite und Animation zwischen aktueller und neuer Seite.
Mit dieser Änderung, begann ich in meinem 2 ImageViews
setImageResource
/setImageDrawable
für die dynamische Belastung des neuen Bildes zu verwenden, bevor Sie durch die Seiten Schieben (I PNG-Dateien verwenden, für HVGA-Displays Größen sortiert ist).
Zu meiner Enttäuschung verschlechterte sich die Leistung, und es kam zu einer gewissen Verzögerung, wenn man schneller durch die Seiten glitt. Ein kurzer Blick in TraceView
ergab, dass 17,4% der Gesamtzeit bei der Verwendung der App, mehr als 5-mal mehr als die nächste schwere Methode, von BitmapFactory.nativeDecodeAsset
verbraucht wurde, aufgerufen von meiner dynamischen Einstellung der Zeichnungs-Ressource.
Ich denke über Möglichkeiten, dies zu umgehen, und ich möchte es auf die bestmögliche Weise tun, so dass alle Vorschläge willkommen sind.
Es klingt, als ob Sie ImageSwitcher neu erfunden haben. ImageSwitcher macht genau das: 2 ImageViews, die für die Anzeige des aktuellen Bildes und des nächsten Bildes verwendet werden. Anders als es klingen mag, wird es nicht nur dazu verwendet, zwischen den beiden Bildern hin- und herzuwechseln, wie es zunächst scheinen mag. Ich benutze es oft für solche Dinge wie das Animieren von Bildern durch einen ganzen Feed (und einen anderen Schalter, um die Titel auch zu animieren). Ich weiß nicht, dass dies Ihre Leistungsprobleme lösen wird, aber es könnte zumindest einige Faktoren ausklammern. – lilbyrdie
Danke für den Vorschlag. Ich musste ImageSwitcher aus mehreren Gründen neu erfinden - erstens, weil ich damit begann, mehrere ImageViews zu enthalten, und dann auf die aktuelle Ansicht und Hilfesicht reduziert, zweitens, weil ich die Kontrolle über eine andere TextView-Komponente haben wollte leicht erreichbar von den ImageViews - ich dachte, ich werde die Hierarchie abflachen und meine benutzerdefinierte Switcher-Ansicht verwenden, die nur tun wird, was ich tun soll. Am Ende, nach dem Spielen mit AllocationTracker und TraceView, glaube ich nicht, dass das Problem in der benutzerdefinierten ViewGroup ist. –