Ich brauche etwas Hilfe beim Verständnis der Grundlagen des Scrollens über Elemente, die auf einer Leinwand in Android gezeichnet werden. Angenommen, ich möchte eine Zeitachse erstellen, in der die Zeit bei 0 der Anfang einer Visualisierung ist und die Zeitachse im Laufe der Zeit weiter unter dem vorherigen Punkt dargestellt wird. Wenn ich dies auf Android rendern möchte, weiß ich, dass ich einfach eine Reihe von Elementen auf einer Leinwand erstellen kann, indem ich onDraw() überschreibe. Nehmen wir jedoch an, die Visualisierung ist größer als der Bildschirm erlaubt.Scrollen über große Leinwand
Zum Beispiel im ersten Bild unten enthält die große schwarze Box die gesamte Leinwand, wie ich es rendere. Ich erstelle eine blaue Linie, die senkrecht nach oben und unten verläuft, sowie mehrere gelbe, grüne und blaue Rechtecke. Das rote Kästchen stellt den Bildschirm des Android dar, der die Visualisierung rendert. Beim ersten Öffnen werden alle Objekte gezeichnet, aber nur die Elemente, die in der roten Box enthalten sind, werden auf dem Bildschirm angezeigt.
Nun, wenn der Benutzer nach unten zu rollen ist, Gegenstände, die zunächst unter dem roten Kasten erschienen sind in Aussicht, während Gegenstände, die nicht aus den Grenzen des roten Feldes gegangen sind länger sichtbar sind, wie dargestellt in das zweite Bild.
Ich glaube, ich brauche scrollables zu verwenden, aber ich bin ganz verloren, wie dies zu tun. Ich habe diese Seite http://developer.android.com/training/custom-views/custom-drawing.html gelesen und erklärt, wie man eigene Kundenbilder erstellt und diese Seite http://developer.android.com/training/custom-views/making-interactive.html erklärt, wie man die UI interaktiv macht, aber ich denke, dass mir etwas fehlt.
Ein Beispielcode, der dieses Problem veranschaulicht (dies ist einfach, annehmen, dass es logisch Diktieren, wo die Boxen/Linien gehen, etc.) ist wie folgt:
package com.example.scrolltest;
import com.example.scrolltest.Draw;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
public class MainActivity extends Activity {
Draw draw;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
draw = new Draw(this);
draw.setBackgroundColor(Color.WHITE);
setContentView(draw);
}
}
und
package com.example.scrolltest;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;
public class Draw extends View {
Paint paint = new Paint();
public Draw(Context context) {
super(context);
}
@Override
public void onDraw(Canvas canvas) {
paint.setColor(Color.GREEN);
canvas.drawRect(30, 30, 90, 200, paint);
paint.setColor(Color.BLUE);
canvas.drawLine(100, 20, 100, 1900, paint);
paint.setColor(Color.GREEN);
canvas.drawRect(200, 2000, 400, 3000, paint);
}
}
Was ich jedoch nicht herausfinden kann, ist, wie ich mit einem scrollbaren Bild zu den Rechtecken scrollen kann, die sich außerhalb des Bildschirms befinden. Ich bin mir auch nicht sicher, ob ich das richtig begonnen habe oder stattdessen Zeichen verwenden sollte ...
wie können wir Feature auf die Leinwand add Panning? –