安卓原生的Button在点击时会有一个如同纸片漂浮与阴影的动画效果,我该如何实现呢?
我还想在获取焦点时实现这个动画效果,我该如果去做?
如果我在TextView上也想实现这个效果呢?
安卓如何实现button原生的漂浮动画效果?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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的动画效果。
回答不易,记得采纳呀。解决 无用评论 打赏 举报
悬赏问题
- ¥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