カスタムImageViewを作成し、そのonDrawメソッドで、タッチなどのユーザー操作に基づいてビットマップを描画する必要があります。ビットマップを追加し始めると、アプリケーションの速度が大幅に低下しますが、すべてが正常に機能しています。
これは、カスタムImageViewのonDrawで行うことです
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Log.e(TAG, "onDraw called");
for (int i=0; i < bitmapList.size(); i++){
drawBitmap(canvas, bitmapList.get(i));
}
}
ご覧のとおり、ビットマップの数が4〜5を超えると、onDrawが自然に呼び出されるたびに、リスト内のすべてのビットマップを再描画しています。操作が非常に高価になり、アプリケーションの速度が低下します。
これをどのように最適化できるかについて、この問題に対する解決策はありますか?
別のスレッドでdrawBitmapを呼び出すと、操作のコストを下げることができますか?
以前のキャンバスのコピーを保持してから、すべてのビットマップを再度描画するのではなく、単にonDrawで復元する方法はありますか?
問題は本質的に、ビューを更新して動的な画像をたくさん表示し、その最適化を行うことです。