Benjamints2001 2023-03-02 18:12 采纳率: 0%
浏览 15

安卓如何实现button原生的漂浮动画效果?

安卓原生的Button在点击时会有一个如同纸片漂浮与阴影的动画效果,我该如何实现呢?
我还想在获取焦点时实现这个动画效果,我该如果去做?
如果我在TextView上也想实现这个效果呢?

img

  • 写回答

3条回答 默认 最新

  • 霸都小魔女 2023-03-02 18:15
    关注

    小魔女参考了bing和GPT部分内容调写:
    要实现Button的原生漂浮动画效果,需要使用Android的StateListAnimator类。StateListAnimator类允许我们定义一系列的动画,当控件的状态发生变化时,可以播放不同的动画。

    首先,我们需要在res/animator/目录下创建一个xml文件,用来定义漂浮动画的动画属性,例如:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true">
            <objectAnimator
                android:duration="@android:integer/config_shortAnimTime"
                android:propertyName="translationZ"
                android:valueTo="4dp"
                android:valueType="floatType" />
        </item>
        <item>
            <objectAnimator
                android:duration="@android:integer/config_shortAnimTime"
                android:propertyName="translationZ"
                android:valueTo="0dp"
                android:valueType="floatType" />
        </item>
    </selector>
    

    然后,我们可以在Button的XML布局文件中,设置StateListAnimator属性,指定我们刚刚定义的动画:

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:stateListAnimator="@animator/button_elevation_animator" />
    

    最后,当Button获取焦点时,我们可以使用Button的setOnFocusChangeListener方法,来播放动画:

    button.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View view, boolean hasFocus) {
            if (hasFocus) {
                view.animate().scaleX(1.1f).scaleY(1.1f).setDuration(200).start();
            } else {
                view.animate().scaleX(1.0f).scaleY(1.0f).setDuration(200).start();
            }
        }
    });
    

    以上就是实现Button原生漂浮动画效果的方法,通过使用StateListAnimator类和setOnFocusChangeListener方法,可以轻松实现Button的动画效果。
    回答不易,记得采纳呀。

    评论

报告相同问题?

问题事件

  • 修改了问题 3月2日
  • 创建了问题 3月2日

悬赏问题

  • ¥15 软件工程用例图的建立(相关搜索:软件工程用例图|画图)
  • ¥15 如何在arcgis中导出拓扑关系表
  • ¥15 处理数据集文本挖掘代码
  • ¥15 matlab2017
  • ¥15 在vxWorks下TCP/IP编程,总是connect()报错,连接服务器失败: errno = 0x41
  • ¥15 AnolisOs7.9如何安装 Qt_5.14.2的运行库
  • ¥20 求:怎么实现qt与pcie通信
  • ¥50 前后端数据顺序不一致问题,如何解决?(相关搜索:数据结构)
  • ¥15 基于蒙特卡罗法的中介效应点估计代码
  • ¥15 罗技G293和UE5.3