現在、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画面よりも大きいこの大きな画像を表示できるようにするために、私が取っているアプローチは正しいですか? もしそうなら、正しい方法だと思う回答にリストされているアプローチに準拠するようにコードを移行するにはどうすればよいですか?