700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Android自定义控件(特效二) 点击屏幕 根据所点击的位置绘制桃心

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

时间:2023-07-05 02:19:41

相关推荐

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

先附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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。