自定义圆继承button实现多点触控和单点触控
来源:互联网 发布:微信一键传图软件 编辑:程序博客网 时间:2024/05/21 09:52
// XML的部分 自定义控件之后要在xml中引用
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.bw.u.day_03duodianchukong.MainActivity"> <com.bw.u.day_03duodianchukong.MyView android:layout_width="match_parent" android:layout_height="match_parent" /></RelativeLayout>继承button的部分
package com.bw.u.day_03duodianchukong;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.AttributeSet;import android.util.Log;import android.view.MotionEvent;import android.widget.Button;import android.widget.Toast;public class MyView extends Button{ private float x=202; private float y=317; private Paint mpaint; private int width; private float radius=5; private float x_s_old; private float y_s_old; private float x_s_new; private float y_s_new; private float old=0; private float ne1=0; private float round=50; public MyView(Context context) { this(context,null); } public MyView(Context context, AttributeSet attrs) { this(context, attrs,R.style.AppTheme); } public MyView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } protected void onDraw(Canvas canvas) { super.onDraw(canvas); width = getWidth(); int radio = 60; //创建画笔 mpaint = new Paint(); mpaint.setAntiAlias(true); mpaint.setStrokeWidth(5);//绘制圆的宽度 mpaint.setStyle(Paint.Style.FILL); mpaint.setColor(Color.RED); //开始画圆 canvas.drawCircle(x,y,radio,mpaint); } public boolean onTouchEvent(MotionEvent event) { //多点触控 switch (event.getAction()&event.ACTION_MASK){ case MotionEvent.ACTION_POINTER_DOWN: x_s_old=event.getX(0)-event.getX(1); y_s_old=event.getY(0)-event.getY(1); old=(float) Math.sqrt(x_s_old*x_s_old+y_s_old*y_s_old); break; case MotionEvent.ACTION_MOVE: //抛异常 要不然会报错 try { x_s_new=event.getX(event.getPointerId(0))-event.getX(event.getPointerId(1)); y_s_new=event.getY(event.getPointerId(0))-event.getY(event.getPointerId(1)); ne1=(float) Math.sqrt(x_s_new*x_s_new+y_s_new*y_s_new); }catch (IllegalArgumentException e){ e.printStackTrace(); } if(ne1>old){ float side=round+3; round=side; round=side; Log.i("aaa", round+""); }else if(ne1<old){ float side=round-3; round=side; } invalidate(); break; case MotionEvent.ACTION_UP: break; } //单点触控 switch (event.getAction()) { case MotionEvent.ACTION_DOWN: Toast.makeText(getContext(),"点击",Toast.LENGTH_SHORT).show(); break; case MotionEvent.ACTION_MOVE: float x_t=event.getX(); float y_t=event.getY(); float t=(x_t-x)*(x_t-x)+(y_t-y)*(y_t-y); float sqrt = (float) Math.sqrt(t); if(sqrt<=50){ x=event.getX(); y=event.getY(); invalidate(); } break; case MotionEvent.ACTION_UP: break; } return true; }}
0 0
- 自定义圆继承button实现多点触控和单点触控
- 【unity3D】单点和多点触控
- 单点触控、多点触控和自定义控件的使用
- Android 单点&多点触控实现-----USB接口
- Android记录单点和多点触控的位置
- 自定义view实现多点触控
- 多点触控与单点触控
- 自定义类继承ImageView 实现多点图片触碰的拖动和缩放
- 自定义类继承ImageView 实现多点图片触碰的拖动和缩放
- 自定义View(多点触控)
- Android-------自定义圆形图片实现多点触控
- 自定义圆形图片实现多点触控放大缩小和拖动
- 自定义圆形图片实现多点触控放大缩小和拖动
- 自定义圆形图片实现多点触控放大缩小和拖动
- HTML5触摸事件(多点、单点触控)
- AndEngine实现多点触控
- 多点触控图片 自定义View
- 自定义圆加载进度单点触控
- leecode 解题总结:62. Unique Paths
- redhat虚拟机
- PAT甲级练习1010. Radix (25)
- cocos2dx-js(3.14版本) JS与C++ 互调 JS与JAVA 互调,JS与OC 互调
- leetcode -- 101. Symmetric Tree 【对称树,结构,内容】
- 自定义圆继承button实现多点触控和单点触控
- 深入理解JVM(八)——类加载的时机
- OpenCV画椭圆、实心圆、凹多边形、线段、矩形
- Mybatis中使用占位符#
- pwnable.kr-random-Writeup
- Core Bluetooth
- git忽略之前以及上传的文件
- 理解一下char**p char*p[]
- day06 面向对象思想