Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从可绘制图形创建位图_Android_Bitmap_Android Drawable - Fatal编程技术网

Android 从可绘制图形创建位图

Android 从可绘制图形创建位图,android,bitmap,android-drawable,Android,Bitmap,Android Drawable,我将要开发一个需要在画布上拖放的应用程序。基本上,我想把一个ShapeDrawable转换成一个Bitmap,我可以让用户在屏幕上拖动它。这本身就是一个简单的练习 但是,我想在形状中添加文本。是否有一种方法可以将文本添加到可绘制的本身,然后转换为位图?我考虑创建一个TextView,背景是可绘制的 这是最好的方法吗?我有点想避免在代码中创建textview。任何建议都将不胜感激 2013年2月21日编辑: 对于JustDanyul的帖子,我有以下代码: int width = 40; int h

我将要开发一个需要在
画布上拖放的应用程序。基本上,我想把一个
ShapeDrawable
转换成一个
Bitmap
,我可以让用户在屏幕上拖动它。这本身就是一个简单的练习

但是,我想在形状中添加文本。是否有一种方法可以将文本添加到
可绘制的
本身,然后转换为位图?我考虑创建一个
TextView
,背景是可绘制的

这是最好的方法吗?我有点想避免在代码中创建
textview
。任何建议都将不胜感激

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>

到我的代码,现在可绘制文件出现,但我的文本已消失(或只是隐藏)。

我建议您尝试以下操作,首先,创建一个空位图:

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的draw方法将ShapeDrawable绘制到空位图上

myshapedrawable.draw(canvas);

最后,您可以使用canvas实例的drawText方法在画布上绘制文本。

shape.setBounds(0,0,bitmap.getWidth(),bitmap.getHeight());解决了我的问题。感谢这将添加shape.setBounds(0,0,bitmap.getWidth(),bitmap.getHeight());特别是对于“xml中的形状”,否则将不起作用
myshapedrawable.draw(canvas);