通过button的背景?android:attr中的属性设置点击水波纹的不一样:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:text="默认水波纹"/>
<Button
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:background="?android:attr/selectableItemBackground"
android:text="方形\n无边框\n水波纹"/>
<Button
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:text="圆形\n无边框\n水波纹"/>
<Button
android:id="@+id/btn1"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:background="#33ff0000"
android:text="自定义"/>
</LinearLayout>
这些水波纹的都是属性动画设置的,谷歌封装了个AnimationUtil供我们使用:
if (v == mBtn1)
{
//放大的动画
// ObjectAnimator animator = ObjectAnimator.ofFloat(v,
// "scaleX",
// 0.5f,
// 1f);
// animator.start();
int centerX = v.getWidth() / 2;//动画起始的位置x坐标
int centerY = v.getHeight() / 2;//动画起始的位置y坐标
float startRadius = v.getWidth();//水波纹开始时的半径
float endRadius = 0;//结束的半径
Animator animator = ViewAnimationUtils.createCircularReveal(v,
centerX,
centerY,
startRadius,
endRadius);
animator.setDuration(3000);
animator.start();
}