我将要开发一款需要拖放Canvas
的应用。基本上,我想采用ShapeDrawable
并将其转换为Bitmap
,我可以让用户在屏幕上拖动。这本身就是一个简单的练习。
但是,我想在我的形状中添加文字。有没有办法可以将文本添加到drawable
本身然后转换为位图?我研究了创建一个带有drawable作为背景的TextView
。
这是最好的方法吗?我想避免在我的代码中创建TextViews
。任何建议都表示赞赏。
编辑2013年2月21日:
在回应JustDanyul的帖子时,我有以下代码:
int width = 40;
int height = 40;
Bitmap.Config config = Bitmap.Config.ARGB_8888;
bitmap = Bitmap.createBitmap(width, height, config);
Canvas canvas = new Canvas(bitmap);
Resources res = context.getResources();
Drawable shape = res.getDrawable(R.drawable.miss_scarlet);
shape.draw(canvas);
Paint paint = new Paint();
paint.setTextSize(fontSize);
paint.setColor(Color.BLACK);
canvas.drawText(gameToken.getDbName(), 5, 5, paint);
当我在另一个画布上绘制位图时,我的drawable没有显示出来。 drawable本身很好(我测试它作为TextView的背景)。文字出现了。我在这段代码中遗漏了什么吗?
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:radius="4dp" />
<solid
android:color="#FF0000" />
<stroke
android:width="3dp"
android:color="#000000" />
</shape>
编辑#2 2/21/2013:
我补充说:
shape.setBounds(0, 0, bitmap.getWidth(), bitmap.getHeight());
到我的代码,现在出现了drawable,但我的文字消失了(或者只是隐藏了)。
答案 0 :(得分:3)
我建议你尝试这样的事情,首先,创建一个空的位图:
int w = 500
int h = 500; // or whatever sizes you need
Bitmap.Config config = Bitmap.Config.ARGB_8888;
Bitmap bitmap = Bitmap.createBitmap(w, h, config);
下一步,创建一个新的画布实例,渲染到新创建的位图
Canvas canvas = new Canvas(bitmap);
现在,您可以使用ShapeDrawable的绘制方法将ShapeDrawable绘制到空位图
myshapedrawable.draw(canvas);
最后,您可以使用画布实例的drawText方法在画布上绘制文本。