BitmapDrawable 已弃用的替代方案

Posted

技术标签:

【中文标题】BitmapDrawable 已弃用的替代方案【英文标题】:BitmapDrawable deprecated alternative 【发布时间】:2012-04-16 06:11:56 【问题描述】:

我有以下代码可以将可绘制对象旋转一定的度数。

    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

【问题讨论】:

'new BitmapDrawable(context.getResources(), canvasBitmap);' 有什么问题? 【参考方案1】:

改为这样做:

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

【讨论】:

好的,谢谢,这似乎有效。我担心那里的弃用!它似乎确实使图标变大了,但我会进一步研究! @LeeArmstrong 它看起来更大,因为它正在使用资源对象将图像调整为屏幕的密度。通常弃用一个方法意味着它不再是做事的正确方法,但它经常被实施以保持向后兼容性。但是,Google 似乎并不总是对 API 友好,所以如果他们将来破坏旧的构造函数,我也不会感到惊讶。 我必须在 Tools 类的静态方法中创建新的 BitmapDrawable。我无法访问上下文。在那种情况下我怎么能使用这种方法? @Marek 我认为您应该使用所有相关源代码提出一个新问题,包括您如何调用该方法。您可能只需要重构该方法以将上下文(或资源)也传递给它。 这个新的构造函数会缩放位图,这在很多情况下并不是我们想要的行为。【参考方案2】:

尝试一次。

    活动中

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

    在片段中

    BitmapDrawable background = new BitmapDrawable(getActivity(), blurImageBg);
    

    在适配器中或其他

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

【讨论】:

【参考方案3】:

BitmapDrawable 的 Kotlin 代码:

var bitmapDrawable = BitmapDrawable(resources,bitmapObj)

【讨论】:

以上是关于BitmapDrawable 已弃用的替代方案的主要内容,如果未能解决你的问题,请参考以下文章

已弃用的 google plus api 的替代解决方案是啥?

寻找现在已弃用的 retryWhen 的替代方案

替代已弃用的 AudioManager.isWiredHeadsetOn?

OAuth2FeignRequestInterceptor 的替代方案,依赖于已弃用的类

iOS 12.0 替代使用已弃用的 archiveRootObject:toFile:

是否有快速替代已弃用的“SKPaymentTransaction.transactionReceipt”?