2017-02-03 4 views
0

J'ai un problème de magie. Toutes les instances de LayerDrawable changent ensemble. J'ai plusieurs vues typiques. . Donc, pour faire ma tâche je décide « Je vais être utilisé « vue composite » Je suis un problème:
Lorsque je change la visibilité sur une couche drawable < le changement sur tous lesLayerDrawable changer ensemble

public abstract class BaseContentExpanded<DATA> extends FrameLayout implements ExpandableLayout.AdditionalAnimators { 

// same not imprtand code 

@Override 
public List<? extends Animator> getAnimators(final boolean togle) { 

    final Drawable showDrawable; 
    final Drawable hideDraawable; 
    final LayerDrawable layerDrawable = (LayerDrawable) vStateSelectionIcon.getDrawable(); 


    if (togle) { 
     showDrawable = layerDrawable.getDrawable(0); 
     hideDraawable = layerDrawable.getDrawable(isCanExpand ? 1 : 2); 
    } else { 
     hideDraawable = layerDrawable.getDrawable(0); 
     showDrawable = layerDrawable.getDrawable(isCanExpand ? 1 : 2); 
    } 


    ValueAnimator expandAnimator = ValueAnimator.ofFloat(0f, 1f); 
    expandAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 
     @Override 
     public void onAnimationUpdate(ValueAnimator animation) { 
      Log.d(TAG, "getAnimators: " + layerDrawable); 
      float currentExpandAnimationValue = (float) animation.getAnimatedValue(); 
      showDrawable.setAlpha((int) (255 * currentExpandAnimationValue)); 
      hideDraawable.setAlpha((int) (255 * (1 - currentExpandAnimationValue))); 
     } 
    }); 


    return Arrays.asList(expandAnimator); 
} 

}

.

Et xml pour LayerDrawable

<?xml version="1.0" encoding="utf-8"?> 
 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
 
\t <item> 
 
\t \t <bitmap android:src="@drawable/ic_close_light"/> 
 
\t </item> 
 

 

 
\t <item 
 
\t \t android:drawable="@drawable/vector_ic_arrow_down_blue_stroke_24dp"/> 
 

 
\t <item 
 
\t \t android:drawable="@drawable/vector_ic_arrow_right_blue_24dp"/> 
 

 

 
</layer-list>

Mise en page

 <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:divider="@drawable/line_divider" 
     android:orientation="vertical" 
     android:showDividers="middle" 
     > 

     <com.learnx.android.ui.view.filters.LocationFilter 
      android:id="@+id/location" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      /> 

     <com.learnx.android.ui.view.filters.RatingFilter 
      android:id="@+id/rating" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      /> 
    </LinearLayout> 

Je serai reconnaissant pour toute aide.

Répondre

0

J'ai blessé l'erreur. j'oublie l'appel mute();

final LayerDrawable layerDrawable = (LayerDrawable) vStateSelectionIcon.getDrawable(); 
    LayerDrawable copyDrawable = (LayerDrawable) layerDrawable.mutate();