首页 > 解决方案 > 如何在android studio中做弹出按钮动画

问题描述

在我正在创建的计算器应用程序中,我希望按钮在单击按钮时以弹出方式(放大)进行动画处理。但这不是问题。只要用户按住按钮,我希望按钮保持按比例放大(更大的尺寸)。只有当用户释放按钮时,它才会恢复到原来的大小(小尺寸)。以同样的方式,只要用户按住按钮,按钮颜色就必须从白色变为蓝色(释放时返回白色)。有没有办法做到这一点?我不太擅长 android studio 中的动画。所以请尽量用简单的语言来解释。

我还附上了我为原型制作制作的视频来说明它。单击下面的链接 https://drive.google.com/file/d/13B8LAuNW1ymhmliw52BEIkMbJAJQRbfw/view?usp=sharing

标签: javaandroidandroid-studioandroid-animation

解决方案


您应该创建一个将选择器作为根元素的 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


推荐阅读