LayerDrawable 一起变化
Posted
技术标签:
【中文标题】LayerDrawable 一起变化【英文标题】:LayerDrawable change together 【发布时间】:2017-06-21 01:48:12 【问题描述】:我有一个魔法问题。 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);
LayerDrawable 的 xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap android:src="@drawable/ic_close_light"/>
</item>
<item
android:drawable="@drawable/vector_ic_arrow_down_blue_stroke_24dp"/>
<item
android:drawable="@drawable/vector_ic_arrow_right_blue_24dp"/>
</layer-list>
布局
<LinearLayout
android:layout_
android:layout_
android:divider="@drawable/line_divider"
android:orientation="vertical"
android:showDividers="middle"
>
<com.learnx.android.ui.view.filters.LocationFilter
android:id="@+id/location"
android:layout_
android:layout_
/>
<com.learnx.android.ui.view.filters.RatingFilter
android:id="@+id/rating"
android:layout_
android:layout_
/>
</LinearLayout>
如果有任何帮助,我将不胜感激。
【问题讨论】:
【参考方案1】:我犯了错误。我忘记调用 mutate();
final LayerDrawable layerDrawable = (LayerDrawable) vStateSelectionIcon.getDrawable();
LayerDrawable copyDrawable = (LayerDrawable) layerDrawable.mutate();
【讨论】:
以上是关于LayerDrawable 一起变化的主要内容,如果未能解决你的问题,请参考以下文章