先附GIF一张
思路如下:多次点击屏幕则会绘制多个桃心,所以将这些桃心放到List中。在点击屏幕后调用onTouchEvent,在onTouchEvent里设置桃心的初始状态值,如半径、XY坐标,然后invalidate调用onDraw进行绘制,最后调用Handler来刷新桃心的透明度。
代码如下:
首先在onTouchEvent里设置桃心的初始值
[java]view plaincopy @OverridepublicbooleanonTouchEvent(MotionEventevent){super.onTouchEvent(event);switch(event.getAction()){caseMotionEvent.ACTION_DOWN://点击屏幕后半径设为0,alpha设置为255MyBeanbean=newMyBean();bean.radius=0;//点击后半径先设为0bean.alpha=MaxAlpha;//alpha设为最大值255bean.X=(int)event.getX();//所绘制的圆的X坐标bean.Y=(int)event.getY();//所绘制的圆的Y坐标bean.paint=initPaint(bean.alpha);list.add(bean);break;}returntrue;}
在添加到list里后,invalidate调用onDraw,来绘制桃心
[java]view plaincopy path.moveTo(bean.X,bean.Y-5*bean.radius);//根据心形函数画图for(doublej=0;j<=2*Math.PI;j+=0.001){floatx=(float)(16*Math.sin(j)*Math.sin(j)*Math.sin(j));floaty=(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:/detail/qq_18612815/9514091