欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > Android >内容正文

Android

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

发布时间:2025/3/15 Android 11 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Android自定义控件(特效二) 点击屏幕,根据所点击的位置绘制桃心 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

先附GIF一张


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

代码如下:

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

[java] view plaincopy
  • @Override  
  •  public boolean onTouchEvent(MotionEvent event) {  
  •   super.onTouchEvent(event);  
  •   
  •   switch (event.getAction()) {  
  •   case MotionEvent.ACTION_DOWN:  
  •    // 点击屏幕后 半径设为0,alpha设置为255  
  •    MyBean bean = new MyBean();  
  •    bean.radius = 0// 点击后 半径先设为0  
  •    bean.alpha = MaxAlpha; // alpha设为最大值 255  
  •    bean.X = (int) event.getX(); // 所绘制的圆的X坐标  
  •    bean.Y = (int) event.getY(); // 所绘制的圆的Y坐标  
  •    bean.paint = initPaint(bean.alpha);  
  •    list.add(bean);  
  •   
  •   
  •    break;  
  •   }  
  •   return true;  
  •  }  



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

    [java] view plaincopy
  • path.moveTo(bean.X, bean.Y - 5 * bean.radius);  
  •    // 根据心形函数画图  
  •    for (double j = 0; j <= 2 * Math.PI; j += 0.001) {  
  •     float x = (float) (16 * Math.sin(j) * Math.sin(j) * Math.sin(j));  
  •     float y = (float) (13 * Math.cos(j) - 5 * Math.cos(2 * j) - 2  
  •       * Math.cos(3 * j) - Math.cos(4 * j));  
  •     x *= bean.radius;  
  •     y *= bean.radius;  
  •     x = bean.X - x;  
  •     y = bean.Y - y;  
  •     path.lineTo(x, y);  
  •    }  
  •    canvas.drawPath(path, paint);  


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

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

    总结

    以上是生活随笔为你收集整理的Android自定义控件(特效二) 点击屏幕,根据所点击的位置绘制桃心的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。