我有一个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时,它仍会显示阴影,这是一个更大的阴影。看起来按下的状态阴影与高程阴影分开。
我尝试设置一个触控侦听器并移除那里的阴影,但由于触摸,阴影已存在。
关于如何绕过触摸阴影动画的任何想法?
答案 0 :(得分:1)
我明白了。
如果我将StateListAnimatior设置为null,则按下的阴影会消失并且动画会起作用。
myFab.setStateListAnimator(空);
这个阴影与高程阴影是分开的,所以我仍然需要在开始动画之前将它们设置为0.
答案 1 :(得分:0)
现在,您可以在使用translationZ
时直接设置Material FAB
:
app:pressedTranslationZ="0dp"
app:hoveredFocusedTranslationZ="0dp"