水波纹可以说是开启了material Design ,但是这个必须要达到一个系统的要求就是5.0以上才有,这不免有些坑。。。。本篇介绍的5.0自带水波纹实现,还有就是如何兼容低版本。
一 5.0实现水波纹
可以直接参考下http://blog.csdn.net/u012702547/article/details/52325418 其中的实现写的都很详细
这边我自己使用的是,在res下建drawable-v21文件夹,然后通过写一个waterwave.xml文件
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#FF9e9e9e">
<item android:drawable="@drawable/ic_launcher"/>
</ripple>
然后引用的时候:直接做为背景就ok
<Button
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="56dp"
android:background="@drawable/waterwave"
android:clickable="true"
android:gravity="center"
android:text="Hello World!" />
这个时候在5.0以下的文件中会出现:button是最原始的样子,这个时候你可以在drawable 文件下建一个相同名字的
waterwave.xml文件就OK了
二:使用开源项目reppleView ( https://github.com/siriscac/RippleView )
注 :我这个demo中直接把源码拉到demo中去了。。。
使用:
<util.RippleView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="click"
android:textAppearance="?android:attr/textAppearanceMedium"
android:gravity="center"
android:padding="35dp"
ripple:alphaFactor="0.7"
ripple:rippleColor="#58FAAC"
ripple:hover="true"
/>
简单说下实现原理中的主意事项吧,
1.首先是画圆,通过draw();
2.点击事件的处理,在
onTouchEvent()中,down的时候开启动画,这个要注意的是,把水波纹处理调在up的时候,要把动画给停止,不然按钮的事件处理完了,还是有水波纹的动态效果。