我正在尝试在画布上显示位图(或从位图创建画布,因为它们似乎是两个不同的东西?)。感谢我昨天在这里得到的一些非常有用的建议,最好的方法似乎是首先创建我自己的自定义视图,然后在其中实现我需要的所有功能。有人建议我不需要为此扩展surfaceView,因为我只需要非常简单的功能,例如平移/捏拉缩放/单击图像,所以我正在扩展View。
这段代码的问题是,即使在我运行它之前,当我在 Eclipse 中单击此视图的图形布局时,我也会收到 StackOverflowError。我只能假设这是因为该行this.draw(canvas);
被递归调用或其他什么。当我注释掉该行并取消注释它上面的行时,canvas.drawBitmap(bmp, 0, 0, paint);
图像在图形布局中完美显示,但是当我运行应用程序时,我得到强制关闭。
public class CanvasView extends View {
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.testmapbmp);
Paint paint = new Paint();
Canvas c = new Canvas(bmp);
public CanvasView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
//super.onDraw(canvas);
//canvas.drawBitmap(bmp, 0, 0, paint);
this.draw(canvas);
//canvas.save();
}
谁能向我解释为什么会这样?这是我之前发布的问题的链接,以防它有助于阐明我想要实现的目标:在 Surfaceview 中的画布上显示位图
非常感谢任何和所有建议!