1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 自定义控件 实现圆形跟随鼠标点击移动

自定义控件 实现圆形跟随鼠标点击移动

时间:2024-04-06 10:11:31

相关推荐

自定义控件 实现圆形跟随鼠标点击移动

public classMainActivityextendsAppCompatActivity {private intscreenW; //屏幕宽度private intscreenH; //屏幕高度 @Overridepublic voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Display dis =this.getWindowManager().getDefaultDisplay();// 设置全屏requestWindowFeature(Window.FEATURE_NO_TITLE);this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);// 获取屏幕宽度screenW= dis.getWidth();// 获取屏幕高度screenH= dis.getHeight();setContentView(newBallView(this));}//自定义绘图类classBallViewextendsView {privatePaintpaint; //定义画笔private floatcx= 50;//圆点默认X坐标private floatcy= 50;//圆点默认Y坐标private intradius= 80;//定义颜色数组private intcolorArray[] = {Color.RED};private intpaintColor=colorArray[0];//定义画笔默认颜色publicBallView(Context context) {super(context);//初始化画笔initPaint();}private voidinitPaint(){paint=newPaint();//设置消除锯齿paint.setAntiAlias(true);//设置画笔颜色paint.setColor(paintColor);}//重写onDraw方法实现绘图操作@Overrideprotected voidonDraw(Canvas canvas) {super.onDraw(canvas);//将屏幕设置为白色canvas.drawColor(Color.WHITE);//修正圆点坐标revise();//绘制小圆作为小球canvas.drawCircle(cx,cy,radius,paint);}//修正圆点坐标private voidrevise(){if(cx<=radius){cx=radius;}else if(cx>= (screenW-radius)){cx=screenW-radius;}if(cy<=radius){cy=radius;}else if(cy>= (screenH-radius)){cy=screenH-radius;}}@Overridepublic booleanonTouchEvent(MotionEvent event) {switch(event.getAction()) {caseMotionEvent.ACTION_DOWN:// 按下cx= (int) event.getX();cy= (int) event.getY();// 通知重绘 postInvalidate(); //该方法会调用onDraw方法,重新绘图break;caseMotionEvent.ACTION_MOVE:// 移动cx= (int) event.getX();cy= (int) event.getY();// 通知重绘 postInvalidate();break;caseMotionEvent.ACTION_UP:// 抬起cx= (int) event.getX();cy= (int) event.getY();// 通知重绘 postInvalidate();break;}/* * 备注1:此处一定要将return super.onTouchEvent(event)修改为return true,原因是: * 1)父类的onTouchEvent(event)方法可能没有做任何处理,但是返回了false。 * 2)一旦返回false,在该方法中再也不会收到MotionEvent.ACTION_MOVE及MotionEvent.ACTION_UP事件。 */ //return super.onTouchEvent(event);return true;}}}

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