Android - 删除按下的动画上的阴影

时间:2015-12-08 23:47:40

标签: android android-animation material-design android-design-library androiddesignsupport

我有一个FAB,当两个动作中的一个发生时,我想用翻转动画。第一个是屏幕内容的更改,第二个是按FAB以确认操作。

我正在使用支持库v22.2.1

中的FAB

我正在使用这个对象动画师来做它

 ObjectAnimator animation = ObjectAnimator.ofFloat(myFab, "rotationY", 0.0f, 360f);
                animation.setDuration(400);
                animation.setInterpolator(new AccelerateDecelerateInterpolator());
                animation.start();

动画按预期工作,视图翻转,在每个棒棒糖设备上看起来很完美。

在Lollipop设备上,它也会翻转阴影,看起来 非常糟糕 并且让人分心。

我将FAB设置为6高程

   <android.support.design.widget.FloatingActionButton
    android:id="@+id/my_fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentBottom="true"
    android:layout_margin="@dimen/fab_compat_margin"    
    app:borderWidth="0dp"
    app:elevation="6dp"/>

我为解决这个问题所做的工作是在动画开始前将高程设置为0,在onAnimationEnd中将其设置为6.

当触发动画的动作不是按下制作时,这是有效的。

当我按下FAB时,它仍会显示阴影,这是一个更大的阴影。看起来按下的状态阴影与高程阴影分开。

我尝试设置一个触控侦听器并移除那里的阴影,但由于触摸,阴影已存在。

关于如何绕过触摸阴影动画的任何想法?

2 个答案:

答案 0 :(得分:1)

我明白了。

如果我将StateListAnimatior设置为null,则按下的阴影会消失并且动画会起作用。

myFab.setStateListAnimator(空);

这个阴影与高程阴影是分开的,所以我仍然需要在开始动画之前将它们设置为0.

答案 1 :(得分:0)

现在,您可以在使用translationZ时直接设置Material FAB

app:pressedTranslationZ="0dp"
app:hoveredFocusedTranslationZ="0dp"