package org.itsnat.droid.impl.xmlinflater.drawable.classtree; import android.graphics.drawable.Drawable; import android.graphics.drawable.TransitionDrawable; import org.itsnat.droid.impl.dom.drawable.DOMElemDrawable; import org.itsnat.droid.impl.xmlinflated.drawable.ElementDrawableChildBase; import org.itsnat.droid.impl.xmlinflated.drawable.ElementDrawableChildRoot; import org.itsnat.droid.impl.xmlinflated.drawable.TransitionDrawableChildItem; import org.itsnat.droid.impl.xmlinflater.drawable.AttrDrawableContext; import org.itsnat.droid.impl.xmlinflater.drawable.ClassDescDrawableMgr; import org.itsnat.droid.impl.xmlinflater.drawable.XMLInflaterDrawable; import java.util.ArrayList; /** * Created by jmarranz on 10/11/14. */ public class ClassDescTransitionDrawable extends ClassDescElementDrawableBased<TransitionDrawable> implements ClassDescCallback // TransitionDrawable deriva de LayerDrawable { public ClassDescTransitionDrawable(ClassDescDrawableMgr classMgr,ClassDescElementDrawableBased<? super TransitionDrawable> parent) { super(classMgr,"transition",parent); } public ClassDescLayerDrawable getParentClassDescDrawable() { return (ClassDescLayerDrawable)getParentClassDesc(); } @Override public ElementDrawableChildRoot createElementDrawableChildRoot(DOMElemDrawable rootElem, AttrDrawableContext attrCtx) { ElementDrawableChildRoot elementDrawableRoot = new ElementDrawableChildRoot(); XMLInflaterDrawable xmlInflaterDrawable = attrCtx.getXMLInflaterDrawable(); xmlInflaterDrawable.processChildElements(rootElem,elementDrawableRoot,attrCtx); ArrayList<ElementDrawableChildBase> itemList = elementDrawableRoot.getElementDrawableChildList(); { ((TransitionDrawableChildItem) itemList.get(0)).getDrawable(); // Just a check } Drawable[] drawableLayers = getLayerChildDrawables(itemList); TransitionDrawable drawable = new TransitionDrawable(drawableLayers); for(Drawable drawableLayer : drawableLayers) { setCallback(drawableLayer,drawable); } ClassDescLayerDrawable parentClassDesc = getParentClassDescDrawable(); parentClassDesc.setItemAttributes(drawable, itemList); elementDrawableRoot.setDrawable(drawable); return elementDrawableRoot; } @Override public Class<TransitionDrawable> getDrawableOrElementDrawableClass() { return TransitionDrawable.class; } protected void init() { super.init(); } }