BitmapDrawable kullanımdan kaldırılmış alternatif


89

Bir çekmeceyi belirli bir derece kadar döndürecek aşağıdaki koda sahibim.

    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); 
    }

Yeni SDK,

BitmapDrawable(canvasBitmap); 

kullanımdan kaldırıldı. Herhangi bir alternatif var mı?

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


1
'New BitmapDrawable (context.getResources (), canvasBitmap);' ile ilgili sorun nedir?
Reuben Scratton

Yanıtlar:


201

Bunun yerine şunu yapın:

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

Tamam teşekkürler, bu işe yarıyor gibi görünüyor. Oradaki kullanımdan kaldırılma konusunda endişeliydim! Simgeyi büyütecek gibi görünüyor, ancak bunu daha ayrıntılı inceleyeceğim!
Lee Armstrong

7
@LeeArmstrong Daha büyük görünüyor çünkü görüntüyü ekranınızın yoğunluğuna göre ayarlamak için kaynak nesnesini kullanıyor. Çoğu zaman bir yöntemin kullanımdan kaldırılması, artık bir şeyleri yapmanın doğru yolu olmadığı, ancak genellikle geriye dönük uyumluluğu korumak için uygulandığı anlamına gelir. Ancak, Google her zaman API dostu görünmüyor, bu yüzden gelecekte eski kurucuyu bozarlarsa beni şaşırtmaz.
onit

Tools sınıfının statik yönteminde yeni BitmapDrawable oluşturmam gerekiyor. Bağlama erişimim yok. Bu durumda bu yöntemi nasıl kullanabilirim?
Marek

1
@Marek Bence bu yöntemi nasıl çağırdığınızı da içeren tüm ilgili kaynak kodlarıyla yeni bir soru açmalısınız. Bağlamın (veya kaynakların) ona da aktarılması için bu yöntemi yeniden düzenlemeniz gerekebilir.
onit

2
Bu yeni yapıcı, çoğu durumda istenen davranış olmayan bitmap'i ölçekler.
Moxor

2

Bunu bir kez deneyin.

  1. Aktivitede

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

    BitmapDrawable background = new BitmapDrawable(getActivity(), blurImageBg);
    
  3. Adaptörde veya başka

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

1

Kotlin kodu BitmapDrawable:

var bitmapDrawable = BitmapDrawable(resources,bitmapObj)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.