3

でドラッグアンドドロップが必要なアプリで作業しますCanvas。基本的には、を取得して、ユーザーが画面上でドラッグできるようにShapeDrawable変換したいと思います。Bitmapこれはそれ自体が簡単な演習です。

ただし、図形内にテキストを追加したいと思います。それ自体にテキストを追加して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);

別のキャンバスにビットマップを描画すると、ドローアブルが表示されません。ドローアブル自体は問題ありません(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());

私のコードにドローアブルが表示されますが、テキストが消えています(または単に非表示になっています)。

4

1 に答える 1

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のdrawメソッドを使用して、ShapeDrawableを空のビットマップに描画できます。

myshapedrawable.draw(canvas);

最後に、canvasインスタンスのdrawTextメソッドを使用して、キャンバスにテキストを描画できます。

于 2013-02-18T22:32:50.517 に答える