Android自定义控件(特效二) 点击屏幕,根据所点击的位置绘制桃心

先附GIF一张


思路如下:多次点击屏幕则会绘制多个桃心,所以将这些桃心放到List中。在点击屏幕后调用onTouchEvent,在onTouchEvent里设置桃心的初始状态值,如半径、XY坐标,然后invalidate调用onDraw进行绘制,最后调用Handler来刷新桃心的透明度。

代码如下:

首先在onTouchEvent里设置桃心的初始值

  1. @Override  
  2.  public boolean onTouchEvent(MotionEvent event) {  
  3.   super.onTouchEvent(event);  
  4.   
  5.   switch (event.getAction()) {  
  6.   case MotionEvent.ACTION_DOWN:  
  7.    // 点击屏幕后 半径设为0,alpha设置为255  
  8.    MyBean bean = new MyBean();  
  9.    bean.radius = 0// 点击后 半径先设为0  
  10.    bean.alpha = MaxAlpha; // alpha设为最大值 255  
  11.    bean.X = (int) event.getX(); // 所绘制的圆的X坐标  
  12.    bean.Y = (int) event.getY(); // 所绘制的圆的Y坐标  
  13.    bean.paint = initPaint(bean.alpha);  
  14.    list.add(bean);  
  15.   
  16.   
  17.    break;  
  18.   }  
  19.   return true;  
  20.  }  



在添加到list里后,invalidate调用onDraw,来绘制桃心

  1. path.moveTo(bean.X, bean.Y - 5 * bean.radius);  
  2.    // 根据心形函数画图  
  3.    for (double j = 0; j <= 2 * Math.PI; j += 0.001) {  
  4.     float x = (float) (16 * Math.sin(j) * Math.sin(j) * Math.sin(j));  
  5.     float y = (float) (13 * Math.cos(j) - 5 * Math.cos(2 * j) - 2  
  6.       * Math.cos(3 * j) - Math.cos(4 * j));  
  7.     x *= bean.radius;  
  8.     y *= bean.radius;  
  9.     x = bean.X - x;  
  10.     y = bean.Y - y;  
  11.     path.lineTo(x, y);  
  12.    }  
  13.    canvas.drawPath(path, paint);  


最后,调用handler来刷新桃心的半径、透明度

完整Demo:http://download.csdn.NET/detail/qq_18612815/9514091

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值