我想写一个白板应用程序。我有一个开始渲染位图(绘图页面),然后将该位图复制到surfaceView。它在模拟器中运行得很好,但是当我在我的三星Galaxy Ace上运行时,它意外地关闭了。这段代码:
public void surfaceCreated(SurfaceHolder holder) {
Log.d(TAG, "Create surface");
mo_paper = BitmapFactory.decodeResource(getResources(), R.drawable.paper);
Log.d(TAG, "Created paper");
mo_easel = new Canvas();
Log.d(TAG, "Created easel");
mo_easel.setBitmap(mo_paper);
Log.d(TAG, "Set easel");
mo_matrix = new Matrix();
Log.d(TAG, "Assets loaded");
mainThread.setRunning(true);
mainThread.start();
Log.d(TAG, "Threads started");
}
输出'创建画架'但是没有设置画架',所以看起来.setBitmap()方法会导致错误。
答案 0 :(得分:0)
从资源加载的位图是不可变的。您需要传递一个BitmapFactory.Options,告诉BitmapFactory您希望生成的位图是不可变的。
答案 1 :(得分:0)
mo_paper = Bitmap.createBitmap(paperWidth, paperHeight, Bitmap.Config.ARGB_8888);
只需绘制我想要的其他位图