В настоящее время у меня есть класс, который динамически рисует кучу квадратов на основе содержимого файла sqlite. Поскольку данные достаточно велики, рисунок во много раз больше экрана. Я прочитал много предлагаемых методов для этого и не уверен в лучшем подходе. Поскольку я не буду изменять изображение после его рендеринга (нужно только динамически отображать его при перезагрузке), первый ответ, указанный в списке here, кажется лучшим, но я не совсем понимаю, как это сделать.Как создать большое изображение, которое можно прокручивать
Если я правильно понимаю, что:
- создать растровое изображение,
- создать свой холст (который больше, чем разрешение экрана)
- захватить кешированный растровый и
- визуализации растрового изображения по сравнению с холст.
Но мне не хватает знаний, чтобы это произошло в моем существующем коде. Мой существующий код просто создает очень большой холст (я не определяю границы, я просто начинаю рисовать). Мой главный класс выглядит следующим образом:
package com.example.drawdemo;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
public class DrawDemo extends Activity {
DrawView drawView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
drawView = new DrawView(this);
drawView.setBackgroundColor(Color.WHITE);
setContentView(drawView);
}
}
А класс DrawView что-то вроде этого:
public class DrawView extends View {
public DrawView(Context context) {
super(context);
}
@Override
public void onDraw(Canvas canvas) {
//LOTS OF CODE HERE to figure out how to render rectangles through loops
// similar to lines like this
canvas.drawRect(xStart, rectYPointer, xEnd, rectYPointer+rectSize, paint);
// or this
canvas.drawText(String.valueOf(rectSize), 130, rectYPointer*2, paint);
}
}
Является ли подход, который я беру правильный подход, чтобы позволить мне прокручивать вниз и посмотреть большое изображение, больше, чем экран Android? Если да, то каким образом я могу перенести свой код, чтобы соответствовать подходу, указанному в ответе, который, по моему мнению, является правильным методом?