Android:正在尝试从颜色代码获取位图。。它返回空值
我正在尝试从colors.xml中定义为可绘制的颜色代码创建位图 每当我尝试从它创建位图时,这一行抛出一个空指针异常 如何从特定颜色代码创建位图。用作R.color或R.drawable程序:Android:正在尝试从颜色代码获取位图。。它返回空值,android,bitmap,Android,Bitmap,我正在尝试从colors.xml中定义为可绘制的颜色代码创建位图 每当我尝试从它创建位图时,这一行抛出一个空指针异常 如何从特定颜色代码创建位图。用作R.color或R.drawable程序: Bitmap result = Bitmap.createBitmap(48,48, Config.ARGB_8888); Canvas canvas = new Canvas(result); // ..... canvas.drawBitmap
Bitmap result = Bitmap.createBitmap(48,48, Config.ARGB_8888);
Canvas canvas = new Canvas(result);
// .....
canvas.drawBitmap(result, rect, rect, paint);
xml:
资源/可提取:
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/bg_toolbar"
android:tileMode="repeat" />
//用法:genBitMapforAnim5,48
protected Bitmap genBitMapforAnim(String itemCode, int size) {
String text = itemCode.length() >= 5 ? itemCode.substring(0, 5) : itemCode;
Bitmap result = Bitmap.createBitmap(size*2,size*2, Config.ARGB_8888);
Canvas canvas = new Canvas(result);
canvas.drawARGB(0, 0xff, 0, 0);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setFilterBitmap(true);
paint.setColor(Color.RED); //use your background color
paint.setAlpha(200);
canvas.drawCircle(size/2, size/2, size/2, paint);
paint.setAlpha(255);
paint.setTextSize(9);
paint.setColor(Color.WHITE); //use your text color
float textWidth = paint.measureText(text);
FontMetrics fm = paint.getFontMetrics();
float textHeight = (float)(fm.descent + fm.ascent)
canvas.drawText(text, (size-textWidth) /2.0f,(size-textHeight)/2.0f, paint);
final Rect rect = new Rect(0, 0,size, size);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(result, rect, rect, paint);
return result;
}
我有一个R.color和R.drawable的颜色代码。。。。我想从中创建一个位图。。。并在程序中使用它。我认为您的代码与此相反,我希望从参考资料中看到R.drawable或R.color之类的东西。。。。这就是我想要的,也是我在讨论中提到的。。。。。失望:
protected Bitmap genBitMapforAnim(String itemCode, int size) {
String text = itemCode.length() >= 5 ? itemCode.substring(0, 5) : itemCode;
Bitmap result = Bitmap.createBitmap(size*2,size*2, Config.ARGB_8888);
Canvas canvas = new Canvas(result);
canvas.drawARGB(0, 0xff, 0, 0);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setFilterBitmap(true);
paint.setColor( context.getResources().getColor(R.color.id)); //use your background color
paint.setAlpha(200);
canvas.drawCircle(size/2, size/2, size/2, paint);
paint.setAlpha(255);
paint.setTextSize(9);
paint.setColor(Color.WHITE); //use your text color
float textWidth = paint.measureText(text);
FontMetrics fm = paint.getFontMetrics();
float textHeight = (float)(fm.descent + fm.ascent)
canvas.drawText(text, (size-textWidth) /2.0f,(size-textHeight)/2.0f, paint);
final Rect rect = new Rect(0, 0,size, size);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(result, rect, rect, paint);
return result;
}