BitmapDrawable已弃用的替代方案

Lee*_*ong 85 android drawable

我有以下代码将旋转一个drawable一定程度的度.

    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); 
    }
Run Code Online (Sandbox Code Playgroud)

新的SDK说明了

BitmapDrawable(canvasBitmap); 
Run Code Online (Sandbox Code Playgroud)

已弃用.有什么选择吗?

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

oni*_*nit 191

改为:

return new BitmapDrawable(context.getResources(), canvasBitmap);
Run Code Online (Sandbox Code Playgroud)

  • @LeeArmstrong它看起来更大,因为它使用资源对象将图像调整到屏幕的密度.经常弃用方法意味着它不再是正确的做事方式,但它经常被实施以保持向后兼容性.但是,谷歌似乎并不总是API友好,所以如果他们将来打破旧的构造函数,我不会感到惊讶. (7认同)
  • 这个新构造函数会缩放位图,在许多情况下,这不是所需的行为. (2认同)