如何做出径向反应?

时间:2015-07-30 11:46:18

标签: android android-animation material-design

Here,按下按钮后,它会在其下方绘制一个圆圈。如何实现这个?

enter image description here

2 个答案:

答案 0 :(得分:9)

它被称为涟漪效应,它已与材料设计一起引入。如果你想支持和棒棒糖前设备,你需要两个不同的实现。为此,请打开res文件夹并创建另外两个文件夹。将第一个drawable(如果它尚未存在)和第二个drawable-v21命名(将由运行lollipop或更高版本API的设备使用)。在drawable-v21文件夹中,创建一个名为add_button_selector.xml的文件,并添加以下代码:

<?xml version="1.0" encoding="utf-8"?>
<ripple
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/buttonColorPressed">
    <item>
        <shape android:shape="oval">
            <solid android:color="#00000000"/> 
        </shape>
    </item>
</ripple>

现在,在drawable文件夹中添加以下三个XML文件:

add_button.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid android:color="#00000000"/> 
</shape>

add_button_selected.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid android:color="@color/buttonColorPressed"/>
</shape>

add_button_selector.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true" android:drawable="@drawable/add_button_selected"/>
    <item android:state_pressed="true" android:drawable="@drawable/add_button_selected"/>
    <item android:drawable="@drawable/add_button"/>
</selector>

现在,您的布局文件中存在按钮,请使用以下行更新其代码:

<Button
        ....
        android:background="@drawable/add_button_selector"
        android:stateListAnimator="@null"
        />

按钮在开始时将是透明的,它将与您的背景颜色相匹配。 buttonColorPressed它将是更深的灰色,当你点击它时会出现。因此,您可以将其自己设置为最适合的那个。但是,在你的情况下,我认为你只需要在透明背景上添加不透明度(alpha)。因此你可以尝试将buttonColorPressed设置为#20000000,即:

替换:

android:color="@color/buttonColorPressed"

使用

android:color="#20000000"

然而,前棒棒糖设备中的上述代码不会像棒棒糖设备那样具有动画效果。在这种情况下,您可能需要在项目中包含以下库: https://github.com/balysv/material-ripple,它可以帮助您轻松整合动画效果。

答案 1 :(得分:0)

这样做的一个简单方法是使用与您当前操作系统版本匹配的?attr版本。

android:background="?attr/actionBarItemBackground"

或(不在操作栏中

android:background="?selectableItemBackgroundBorderless"