3つのクラスがあるとしましょう。
- クラスA(アクティビティを拡張)
クラスB
クラスC(ビューを拡張)
Aは、を保持するBオブジェクトを作成しますBitmap
。AはCも無効にします。CはそのにonDraw
aを描画します。Bitmap
Canvas
Cで別のオブジェクトBitmap
を作成せずに、Bが保持するを描画するにはどうすればよいですか?Bitmap
同じ「クラス構造」を維持することが重要であることに注意してください。
これが擬似コードです。Bitmap
これにより、2つのオブジェクトがメモリに配置されることがわかります。ありがとう!
public class A extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
B b = new B();
C c = (C) findViewById(R.id.c);
c.passTheBitmap(b.bitmap);
c.postInvalidate();
}
}
public class B {
public Bitmap bitmap;
public B(){
bitmap = BitmapFactory.decodeResource(ActivityAContext.getResources(), R.drawable.fooBitmap);
}
}
public class C extends View {
public Bitmap bitmap;
public C(Context context, AttributeSet attrs) {
super(context, attrs);
}
public passTheBitmap(Bitmap b) {
bitmap = b;
}
@Override
public void onDraw(Canvas canvas) {
if (bitmap != null) {
canvas.drawBitmap(bitmap, 0, 0, null);
}
}
}