[英]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.