隐藏/显示带有缩放动画的FAB

26

我正在使用自定义的浮动操作菜单。我需要在显示/隐藏菜单按钮时实现缩放动画,就像这里所示floating action button behaviour.

有没有什么方法可以做到这一点?


3
使用Design库提供的fab.show()和fab.hide()方法。此外,您可能需要查看此链接(https://dev59.com/gF0Z5IYBdhLWcg3w4zsm)来了解如何像Google应用程序一样动画化FloatingActionButton。 - Skynet
这不是 Android FAB 库,这是自定义的 FAB 菜单 此处 - JosephM
为什么在框架已经提供了这个控件的情况下,你还想使用一个库呢? - Skynet
https://dev59.com/gF0Z5IYBdhLWcg3w4zsm#30953215 - Pratik Butani
3个回答

82

设计支持库版本22.2.1添加了FloatingActionButton类的hide()和show()方法,因此您可以从现在开始使用它们。

FloatingActionButton mFab;
mFab.hide();
mFab.show();

你可以为其应用自己的动画效果。 有关更多信息,请查看此处
有关FAB的更多信息,请参阅官方文档


6
链接谷歌的东西是荒谬的,我们需要例子。 - djdance

27

你可以在浮动操作按钮上使用这些缩放动画,它会产生与设计库浮动操作按钮相同的效果。

scale_up.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <scale
        android:duration="100"
        android:fromXScale="0"
        android:fromYScale="0"
        android:pivotX="85%"
        android:pivotY="85%"
        android:toXScale="1.0"
        android:toYScale="1.0" />
</set>

scale_down.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <scale
        android:duration="100"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:pivotX="85%"
        android:pivotY="85%"
        android:toXScale="0"
        android:toYScale="0" />
</set>

11
我该把它放在哪里?我该怎么使用它? - Jemar Jones
3
就像Anuj所说的:FloatingActionButton fab = this.findViewById( ... ); Animation myAnim = AnimationUtils.loadAnimation(MainActivity.this, R.anim.scale_up); fab.startAnimation(myAnim);意思是:创建一个浮动操作按钮(FloatingActionButton)对象,并为它加载一个名为scale_up的动画资源文件。然后,通过调用startAnimation()方法,让该按钮执行这个动画。 - adrianoBP

8

请在自定义视图上加载这些动画。不要忘记将中心点设置为50%并将插值器设置为线性插值器。

scale_up.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <scale
        android:duration="100"
        android:fromXScale="0"
        android:fromYScale="0"
        android:interpolator="@android:anim/linear_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1.0"
        android:toYScale="1.0" />
</set>

scale_down.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <scale
        android:duration="100"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:interpolator="@android:anim/linear_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="0"
        android:toYScale="0" />
</set>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接