2017-02-03 20 views
0

У меня есть волшебная проблема. Все экземпляры LayerDrawable изменяются вместе. У меня есть несколько типичных просмотров. . Таким образом, чтобы сделать свою задачу я решить «Я буду использовать„Композитный вид“У меня проблема:
Когда я изменить видимость на одном уровне вытяжки < изменения на всехLayerDrawable change together

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); 
} 

}

.

И XML для 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>

Layout

 <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> 

буду благодарен за любую помощь.

ответ

0

Я ранил ошибку. я забыл call mutate();

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