目前我有一个类可以根据 sqlite 文件的内容动态绘制一堆正方形。由于数据非常大,绘图比屏幕大很多倍。我已经阅读了很多建议的方法来做到这一点,并且不确定最好的方法。因为我在渲染后不会更改图像(只需要在重新启动时动态渲染它),这里列出的第一个答案似乎是最好的,但我并不完全理解如何这样做。
如果我理解正确,我:
- 创建位图,
- 创建我的画布(大于屏幕分辨率)
- 抓取缓存的位图并
- 渲染位图与画布。
但是我缺乏在现有代码中实现这一点的知识。我现有的代码只是创建了一个非常大的画布(我没有定义边界,我只是开始绘制)。我的主要课程如下所示:
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 屏幕更大的大图像?如果是这样,我如何迁移我的代码以符合我认为是正确方法的答案中列出的方法?