Мне нужна помощь, чтобы понять основы прокрутки элементов, которые нарисованы на холсте в Android. Предположим, я хочу создать временную шкалу, где время в 0 является вершиной визуализации, и по мере увеличения времени шкала продолжает отображаться ниже предыдущей точки. Если я хочу сделать это на Android, я знаю, что могу просто создать кучу элементов на холсте, переопределив onDraw(). Однако предположим, что визуализация больше, чем позволяет экран.
Например, на первом рисунке ниже большой черный ящик содержит весь холст, когда я его делаю. Я создаю синюю линию, которая работает вертикально вверх и вниз, а также несколько желтых, зеленых и синих прямоугольников. Красная рамка представляет собой экран Android, который визуализирует визуализацию. Когда он изначально открывается, все элементы рисуются, но на экране появляются только элементы, содержащиеся в красном поле.
Теперь, если пользователь должен прокручивать вниз, элементы, которые первоначально появились под красным полем, находятся в поле зрения, в то время как элементы, которые вышли из границ красного квадрата, больше не видны, как показано на втором рисунке.
Я считаю, что мне нужно использовать прокрутки, но я совершенно потерял, как это сделать. Я прочитал эту страницу http://developer.android.com/training/custom-views/custom-drawing.html, объяснив, как создать свои собственные изображения клиентов, и эта страница http://developer.android.com/training/custom-views/making-interactive.html, объясняя, как сделать интерактивный интерфейс интерактивным, но я думаю, что что-то не хватает.
Образец кода, который иллюстрирует эту проблему (это основной, предположим, что существует логика, диктующая WHERE, строки/линии идут и т.д.) выглядит следующим образом:
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);
}
}
и
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);
}
}
Что я не могу понять, так это то, как я использую прокручиваемую прокрутку вниз до прямоугольников, которые находятся вне экрана. Я также не уверен, что я начал это правильно или должен использовать drawables вместо...