java - 如何在android studio中做弹出按钮动画
问题描述
在我正在创建的计算器应用程序中,我希望按钮在单击按钮时以弹出方式(放大)进行动画处理。但这不是问题。只要用户按住按钮,我希望按钮保持按比例放大(更大的尺寸)。只有当用户释放按钮时,它才会恢复到原来的大小(小尺寸)。以同样的方式,只要用户按住按钮,按钮颜色就必须从白色变为蓝色(释放时返回白色)。有没有办法做到这一点?我不太擅长 android studio 中的动画。所以请尽量用简单的语言来解释。
我还附上了我为原型制作制作的视频来说明它。单击下面的链接 https://drive.google.com/file/d/13B8LAuNW1ymhmliw52BEIkMbJAJQRbfw/view?usp=sharing
解决方案
您应该创建一个将选择器作为根元素的 xml 文件。此元素选择当前状态(如按下、聚焦或启用)基础中的形状。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_enabled="false"
android:drawable="@drawable/button_disabled" />
<item
android:state_pressed="true"
android:state_enabled="true"
android:drawable="@drawable/button_pressed" />
<item
android:state_focused="true"
android:state_enabled="true"
android:drawable="@drawable/button_focused" />
<item
android:state_enabled="true"
android:drawable="@drawable/button_enabled" />
</selector>
如果您想要具有不同颜色和大小的不同形状,则必须创建一个新的可绘制对象,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient
android:startColor="#00CCFF"
android:centerColor="#0000CC"
android:endColor="#00CCFF"
android:angle="90"/>
<padding android:left="7dp"
android:top="7dp"
android:right="7dp"
android:bottom="7dp" />
<stroke
android:width="2dip"
android:color="#FFFFFF" />
<corners android:radius= "8dp" />
</shape>
如果要更改大小,可以使用属性 size。然后您必须在 mainActivity onCreate 文件中实现 on click 侦听器,并将按钮的按下状态设置为 true。简而言之,您必须为按钮创建一个可绘制的选择器,为按下状态“true”创建两个可绘制选择器,为按下 =“false”创建一个。
在这里,我举了一个详尽的例子:https ://stackoverflow.com/a/29848987/13198061
推荐阅读
- flutter - Dart:不要重命名被覆盖方法的参数(avoid_renaming_method_parameters)
- tensorflow - 如何通过 webhook 连接模型和线路?
- javascript - 调用firebase getIdToken的最理想方式
- informix - IBM Informix SQL 中的 LIKE
- android - Kotlin 中的自定义 SeekBar
- arrays - VBA宏:获取一组条件的最大匹配单元格值
- amazon-web-services - 驱逐 pod kube-system/dns-controller 卡住
- fastlane - 为什么使用fastlane match nuke时还需要输入密码
- typescript - 在 VS Code 中对 AWS SAM 无服务器应用程序进行 TypeScript 调试
- docker - Traefik 将 SSL 转发到 php-nginx docker 映像(到 Laravel 的 https 流量)