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

답변:


201

대신 다음을 수행하십시오.

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

좋습니다. 작동하는 것 같습니다. 나는 거기에서 지원 중단이 걱정되었습니다! 아이콘을 더 크게 만드는 것 같지만 더 자세히 살펴 보겠습니다!
Lee Armstrong

7
@LeeArmstrong 리소스 개체를 사용하여 화면의 밀도에 맞게 이미지를 조정하기 때문에 더 크게 보입니다. 종종 메소드를 비추천한다는 것은 더 이상 일을 수행하는 올바른 방법이 아니라 이전 버전과의 호환성을 유지하기 위해 구현되는 경우가 많다는 것을 의미합니다. 그러나 Google이 항상 API 친화적 인 것 같지는 않기 때문에 향후 이전 생성자를 망가 뜨렸다 고해도 놀라지 않을 것입니다.
onit

Tools 클래스의 정적 메서드에서 새 BitmapDrawable을 만들어야합니다. 컨텍스트에 대한 액세스 권한이 없습니다. 이 경우 어떻게이 방법을 사용할 수 있습니까?
Marek

1
@Marek 나는 당신이 그 메서드를 호출하는 방법을 포함하여 모든 관련 소스 코드로 새로운 질문을 열어야한다고 생각합니다. 컨텍스트 (또는 리소스)도 전달되도록 해당 메서드를 리팩터링해야 할 수도 있습니다.
onit 2013-06-06

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.