假设我有 3 个类(class)。
- A 类(扩展 Activity )
B级
C类(扩展 View )
A 创建一个包含 Bitmap
的 B 对象。 A 还使 C 无效。C 的 onDraw
将 Bitmap
绘制到其 Canvas
。
如何在不在 C 中创建另一个 Bitmap
对象的情况下绘制 B 持有的 Bitmap
对象?请注意,保持相同的“类结构”对我来说很重要。
这是伪代码。您可以看到这将 2 个 Bitmap
对象放入内存中。谢谢!
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);
}
}
}
最佳答案
好吧,通过在 C 中声明实例变量,您并没有完全复制 C 中的 Bitmap 对象。您只是拥有另一个对在 B 的构造函数中创建的原始 Bitmap 对象的引用。
关于java - 如何在不重复的情况下通过 A 类将 Java 中的对象从 B 类传递到 C 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5060156/