给按钮添加点击效果:
低版本SDK点击按钮是没有任何效果的,在高版本SDK默认添加了水波纹效果,如图:
100.gif
当然,我们可以修改它的颜色,也可以重新自定义一个水波纹动画,有关这个效果请查看这篇博客。
您可能经常使用selector
设置按钮的背景:
<Button
android:id="@+id/bt_cardview"
android:layout_width="200dp"
android:layout_height="100dp"
android:layout_centerInParent="true"
android:stateListAnimator="@color/colorPrimary"
android:background="@drawable/bg_select"
android:text=""/>
selector
和shape
结合
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false">
<shape>
<solid android:color="#D67B5E" />
<stroke android:width="5dp" android:color="#E94612"/>
<corners android:radius="5dp"/>
</shape>
</item>
<item android:state_pressed="true">
<shape>
<solid android:color="#966DDF" />
<stroke android:width="5dp" android:color="#5E18DA"/>
<corners android:radius="5dp"/>
</shape>
</item>
</selector>
效果如下:
101.gif
接下来开始讲解StateListAnimator
了,StateListAnimator
可以让按钮真正的动
起来,下面我们来实现按钮点击上下起伏的效果。
在View中有个stateListAnimator属性,可以在xml中设置:
<Button
android:id="@+id/bt_cardview"
android:layout_width="200dp"
android:layout_height="100dp"
android:layout_centerInParent="true"
android:stateListAnimator="@animator/bg_select"
android:text=""/>
bg_select.xml
这个文件存放在animator文件夹中,如图:
图片.png
在这个文件中可以添加动画效果,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false">
<set>
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="scaleX"
android:valueTo="1.0"
android:valueType="floatType" />
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="scaleY"
android:valueTo="1.0"
android:valueType="floatType" />
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ"
android:valueTo="0dp"
android:valueType="floatType" />
</set>
</item>
<item android:state_pressed="true">
<set>
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="scaleX"
android:valueTo="1.025"
android:valueType="floatType" />
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="scaleY"
android:valueTo="1.025"
android:valueType="floatType" />
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ"
android:valueTo="4dp"
android:valueType="floatType" />
</set>
</item>
</selector>
最终按钮的点击效果为:
102.gif
OK,轻松实现按钮起伏效果。需要提醒的是,上图效果我没有给他设置背景和前景,只是添加了动画效果,想要添加什么背景可以自由发挥。
[本章完...]