2017-02-03 42 views
0

我有一個神奇的問題。 LayerDrawable的所有實例都一起更改。 我有幾個典型的意見。 。因此,要完成我的任務,我決定:「我將用‘複合視圖’我有一個問題:
當我在一個圖層繪製<上所有的改變而改變的知名度LayerDrawable一起改變

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>

佈局

 <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

我傷了這個錯誤。我忘記調用mutate();

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