Android源码解析--Material Design之水波纹点击效果RippleEffect使用

Android5.0已经出了好久了,但是目前市场上的App好像没有多少用5.0上面的一些效果,依旧延续着之前的控件使用,但是既然新的东西已经出来了,就必定会淘汰旧的不好的,所以我们要与时俱进。其中Material Design真的很不错,其中有好多酷炫的动画,Android5.0的SwipeRefreshLayout会取代之前的PullToRefreshListView、RecyclerView,CardView也会取代ListView、MaterialEdittext也会取代Edittex以及一些FloatButton等等,以后会逐一介绍的。今天我们看一下RippleEffect水波纹点击效果,先上图:


大家可以看到按钮或者布局点击的时候会有水波涟漪的效果,很不错,用到你的app上一定会很高大上的。

下面我们分析一下源码,然后再看怎么使用,因为我觉得如果你光会用但是不了解怎么实现的你最多也就算个码农,所以我们要尝试着读懂源码,然后再尝试着自己定义view

首先在init()方法中初始化一些组件和styles,并设置相应的属性包括设置画布的抗锯齿标志、画图的实心空心、透明度颜色的设置。

[java]  view plain copy
  1. <span style="font-size:14px;"><span style="white-space: pre;">  </span>paint = new Paint();  
  2.         paint.setAntiAlias(true);   //设置画布抗锯齿标志  
  3.         paint.setStyle(Paint.Style.FILL);   //设置画图实心  
  4.         paint.setColor(rippleColor);    //设置画图颜色  
  5.         paint.setAlpha(rippleAlpha);    //设置透明度  
  6.         this.setWillNotDraw(false);     //设置将不绘画</span>  
然后创建手势,因为我们的点击有可能为长点击,我们用手势来做一些操作

[java]  view plain copy
  1. <span style="font-size:14px;"><span style="white-space:pre">    </span>/** 
  2.          * 创建新的手势 
  3.          */  
  4.         gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {  
  5.             @Override  
  6.             public void onLongPress(MotionEvent event) {  
  7.                 super.onLongPress(event);  
  8.                 animateRipple(event);   //创建动画  
  9.                 sendClickEvent(true);   //发送长点击事件  
  10.             }  
  11.   
  12.             @Override  
  13.             public boolean onSingleTapConfirmed(MotionEvent e) {  
  14.                 return true;  
  15.             }  
  16.   
  17.             @Override  
  18.             public boolean onSingleTapUp(MotionEvent e) {  
  19.                 return true;  
  20.             }  
  21.         });  
  22.   
  23.         this.setDrawingCacheEnabled(true);  //更新cache,提高绘图速度  
  24.         this.setClickable(true);</span>  
接下来重写OnDraw()方法

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值