Android 在从资源获取的位图上绘制文本
我正试图从一个资源创建一个位图,并在上面绘制一个简单的文本。代码编译并运行,但当我点击按钮时,应用程序在AVD中崩溃,会出现什么问题Android 在从资源获取的位图上绘制文本,android,bitmap,drawing,Android,Bitmap,Drawing,我正试图从一个资源创建一个位图,并在上面绘制一个简单的文本。代码编译并运行,但当我点击按钮时,应用程序在AVD中崩溃,会出现什么问题 package apc.examples; import android.os.Bundle; import android.os.Environment; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; imp
package apc.examples;
import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.view.Menu;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_about_me);
}
public void showAboutMessage(View v)
{
Bitmap marked= BitmapFactory.decodeResource(getResources(), R.drawable.my_image);
ImageView portrait = (ImageView) findViewById(R.id.imageView1);
Canvas canvas = new Canvas(marked);
canvas.drawBitmap(marked, 0, 0, null);
Paint paint = new Paint();
paint.setColor(Color.WHITE);
paint.setTextSize(10);
canvas.drawText("asfasf",0, 0, paint);
portrait.setImageBitmap(marked);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.about_me, menu);
return true;
}
}
资源位图是不可变的。在写入之前,应该将其复制到可变位图。下面是来自
为了节省一些内存,而不是解码和复制,您应该将可变参数输入为
BitmapFactory。选项
到BitmapFactory
,如下所示:
...
Options opt = new BitmapFactory.Options();
opt.inMutable = true;
Bitmap marked= BitmapFactory.decodeResource(getResources(), R.drawable.my_image, opt);
...
在使用BitmapFactory解码资源之前,这应该返回一个可变的、随时可用且可以随意更改的位图,
Bitmap
我应该在哪里引入此代码?
...
Options opt = new BitmapFactory.Options();
opt.inMutable = true;
Bitmap marked= BitmapFactory.decodeResource(getResources(), R.drawable.my_image, opt);
...