Android5.0已经出了好久了,但是目前市场上的App好像没有多少用5.0上面的一些效果,依旧延续着之前的控件使用,但是既然新的东西已经出来了,就必定会淘汰旧的不好的,所以我们要与时俱进。其中Material Design真的很不错,其中有好多酷炫的动画,Android5.0的SwipeRefreshLayout会取代之前的PullToRefreshListView、RecyclerView,CardView也会取代ListView、MaterialEdittext也会取代Edittex以及一些FloatButton等等,以后会逐一介绍的。今天我们看一下RippleEffect水波纹点击效果,先上图:
大家可以看到按钮或者布局点击的时候会有水波涟漪的效果,很不错,用到你的app上一定会很高大上的。
下面我们分析一下源码,然后再看怎么使用,因为我觉得如果你光会用但是不了解怎么实现的你最多也就算个码农,所以我们要尝试着读懂源码,然后再尝试着自己定义view
首先在init()方法中初始化一些组件和styles,并设置相应的属性包括设置画布的抗锯齿标志、画图的实心空心、透明度颜色的设置。
- <span style="font-size:14px;"><span style="white-space: pre;"> </span>paint = new Paint();
- paint.setAntiAlias(true); //设置画布抗锯齿标志
- paint.setStyle(Paint.Style.FILL); //设置画图实心
- paint.setColor(rippleColor); //设置画图颜色
- paint.setAlpha(rippleAlpha); //设置透明度
- this.setWillNotDraw(false); //设置将不绘画</span>
- <span style="font-size:14px;"><span style="white-space:pre"> </span>/**
- * 创建新的手势
- */
- gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
- @Override
- public void onLongPress(MotionEvent event) {
- super.onLongPress(event);
- animateRipple(event); //创建动画
- sendClickEvent(true); //发送长点击事件
- }
- @Override
- public boolean onSingleTapConfirmed(MotionEvent e) {
- return true;
- }
- @Override
- public boolean onSingleTapUp(MotionEvent e) {
- return true;
- }
- });
- this.setDrawingCacheEnabled(true); //更新cache,提高绘图速度
- this.setClickable(true);</span>