簡體   English   中英

如何從TransitionDrawable獲取位圖

[英]How do I get Bitmap from a TransitionDrawable

我有一個我需要其位圖的TransitionDrawable。 當我使用getCurrent()獲取其Drawable時,顯然結果仍然是TransitionDrawable 但是事實是TransitionDrawable是在另一個類中使用

final TransitionDrawable td = new TransitionDrawable(new Drawable[] {
  new ColorDrawable(android.R.color.transparent), drawable });

其中drawable是BitmapDrawable。 但是如果我嘗試投射為

Bitmap bmp = (BitmapDrawable) transitionDrawable.getCurrent();

然后我得到一個類強制轉換異常。

對於上下文,這是BitmapFun的ImageWorker的第378行中的TransitionDrawable。

TransitionDrawable繼承自LayerDrawable,因此您可以使用findDrawableByLayerId(int id)獲取特定的可繪制對象。

示例:使用來自android來源(4.4.1)的btn_toggle_bg.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+android:id/background" android:drawable="@android:drawable/btn_default_small" />
<item android:id="@+android:id/toggle" android:drawable="@android:drawable/btn_toggle" />
</layer-list>

並假設它是在transitionDrawable對象中獲取的:

Drawable d = transitionDrawable.findDrawableByLayerId( android.R.id.background );

背景ID由android定義,因此這就是R限定於android的原因。 如果您在自己的應用中創建了ID,則它看起來就像<item android:id="@+id/mylayerid" ... ,然后您可以使用.findDrawableByLayerId( R.id.mylayerid );找到它.findDrawableByLayerId( R.id.mylayerid );

在代碼中構建Transition可繪制對象時,您需要分配每個可繪制對象。

transitionDrawable.setDrawableBylayerId( android.R.id.background, new ColorDrawable(..) );

如果該ID不存在,它將作為具有該ID的圖層添加。

希望能有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM