Ich bin neu in der Android-Entwicklung und stoße auf ein schwieriges Problem, wenn ich versuche, eine Grafikzeichnung auf einer View zu implementieren.Die onDraw-Methode von View wird immer wieder auf Android 2.2 aufgerufen.
Was ich tun möchte, ist ein Diagramm in einer Ansicht zu zeichnen. Ich legte eine Ansicht in eine ScrollView und überschreibe die OnDraw-Methode von View und Zeichnen in OnDraw. Das Wichtigste ist, dass das Diagramm Scroll-Funktionen benötigt. Die OnDraw-Methode der View überschreibt die Koordinatenberechnung und viele notwendige Elemente (Linie, Punkt, Achse, Beschriftung usw.) in einem Diagramm. Wie Sie sich vorstellen können, berechne und zeichne ich das ganze Diagramm nicht nur den sichtbaren Bereich, sondern den gesamten Bereich einschließlich Offscreen. Jetzt ist das Problem, dass onDraw Methode immer wieder aufgerufen wird, wenn ich die ScrollView blättern, so dass es ein Leistungsproblem verursacht und die Bildlaufansicht sehr langsam ausgeführt wird. Ich habe versucht, einen Weg zu finden, den Aufruf von onDraw nach dem ersten Anruf zu verhindern, aber kein Glück. Ich muss das selbe immer wieder einmal aufDraw berechnen, was nicht nötig ist.
Haben Sie eine Antwort? Vielen Dank.
Ich hoffe, Sie verwenden diese nicht, da sie keine öffentlichen APIs sind. Die öffentlichen APIs zum Abrufen des Scroll-Offsets sind: http://developer.android.com/reference/android/view/View.html#getScrollX() – hackbod
Sie meinen, ich muss den sichtbaren Bereich noch neu berechnen? Ich bevorzuge, dass es nur einmal nach der Ansicht berechnet wird, die dem Benutzer zuerst gezeigt wird, weil die ganze Leinwand immer gleich ist, während der Benutzer sie scrollt, und ich denke, es kostet Zeit, sie neu zu berechnen, und tatsächlich verursacht es das Leistungsproblem tatsächlich Ich zeichne einfach ein Rechteck darauf. Gibt es da trotzdem zu vermeiden, das beim Scrollen immer wieder neu zu berechnen? –