51

私の問題に対する適切な答えが見つかりませんでしたが、複数の同様の質問に目を通しました。

shape.xml で定義されたドローアブルがあります

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >

    <solid android:color="@color/bg_color" />
</shape>

いくつかの操作を実行するために Bitmap オブジェクトに変換したいのですが、BitmapFactory.decodeResource()null を返します。

これが私がやっている方法です:

Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.shape);

私は何を間違っていますか?BitmapFactory.decodeResource()xml で定義されたドローアブルに適用できますか?

4

5 に答える 5

99

DrawableではなくをロードしたいのでBitmap、これを使用します。

Drawable d = getResources().getDrawable(R.drawable.your_drawable, your_app_theme);

それをに変えるにはBitmap

public static Bitmap drawableToBitmap (Drawable drawable) {

    if (drawable instanceof BitmapDrawable) {
        return ((BitmapDrawable)drawable).getBitmap();
    }

    Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap); 
    drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
    drawable.draw(canvas);

    return bitmap;
}

出典: Drawable を Bitmap に変換する方法

于 2014-06-24T14:21:37.587 に答える
3

Android KTXに、ドローアブルをビットマップに変換するための拡張機能が追加されました

val bitmap = ContextCompat.getDrawable(context, R.drawable.ic_user_location_pin)?.toBitmap()

if (bitmap != null) {
    markerOptions.icon(BitmapDescriptorFactory.fromBitmap(bitmap))
}
于 2021-09-19T22:50:54.137 に答える
0

ビットマップではなくドローアブルです。getDrawable代わりに使用する必要があります

于 2014-06-24T14:21:44.193 に答える