BitmapDrawable非推奨の代替


88

ドローアブルを一定量回転させる次のコードがあります。

    public Drawable rotateDrawable(float angle, Context context)
    {
      Bitmap arrowBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.generic2rb);

      // Create blank bitmap of equal size
      Bitmap canvasBitmap = arrowBitmap.copy(Bitmap.Config.ARGB_8888, true);
      canvasBitmap.eraseColor(0x00000000);

      // Create canvas
      Canvas canvas = new Canvas(canvasBitmap);

      // Create rotation matrix
      Matrix rotateMatrix = new Matrix();
      rotateMatrix.setRotate(angle, canvas.getWidth()/2, canvas.getHeight()/2);

      //Draw bitmap onto canvas using matrix
      canvas.drawBitmap(arrowBitmap, rotateMatrix, null);

      return new BitmapDrawable(canvasBitmap); 
    }

新しいSDKでは、

BitmapDrawable(canvasBitmap); 

廃止予定です。代替案はありますか?

http://developer.android.com/reference/android/graphics/drawable/BitmapDrawable.html


1
'new BitmapDrawable(context.getResources()、canvasBitmap);'の何が問題になっていますか?
Reuben Scratton、2012

回答:


200

代わりにこれを行ってください:

return new BitmapDrawable(context.getResources(), canvasBitmap);

OK、それはうまくいくようです。そこでの廃止が心配でした!アイコンを大きくするように見えますが、さらに調査します!
Lee Armstrong

7
@LeeArmstrongリソースオブジェクトを使用して画像を画面の密度に調整しているため、大きく見えます。多くの場合、メソッドを非推奨にするということは、メソッドを実行するための正しい方法ではなくなったということですが、下位互換性を維持するために実装されたままになることがよくあります。ただし、Googleは常にAPIと親和性があるとは限らないため、将来、古いコンストラクターが壊れたとしても驚かないでしょう。
onit

Toolsクラスの静的メソッドで新しいBitmapDrawableを作成する必要があります。コンテキストにアクセスできません。その場合、この方法をどのように使用できますか?
Marek

1
@マレク私はあなたがそのメソッドを呼び出す方法を含むすべての関連するソースコードで新しい質問を開く必要があると思います。コンテキスト(またはリソース)も渡すために、そのメソッドをリファクタリングする必要があるだけかもしれません。
onit

2
この新しいコンストラクターはビットマップをスケーリングしますが、多くの場合、これは望ましい動作ではありません。
Moxor 2014年

2

一度これを試してください。

  1. 活動中

    BitmapDrawable background = new BitmapDrawable(this.getResources(), blurImageBg);
  2. 断片的に

    BitmapDrawable background = new BitmapDrawable(getActivity(), blurImageBg);
  3. アダプターまたはその他

    BitmapDrawable background = new BitmapDrawable(context.getResources(), blurImageBg);

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.