两点触控--画多边形
来源:互联网 发布:理财入门知乎 编辑:程序博客网 时间:2024/06/11 20:57
public class MainActivity extends AppCompatActivity implements View.OnTouchListener{ ImageView image; private static final String TAG = "TAG"; Canvas canvas; Paint p; Paint p1; Path path; Bitmap baseBitmap; Bitmap bitmap; Button refresh,ablum; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); init(); //刷新 refresh.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { refreshImage(); } }); //从相册里获取图片 ablum.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); } private void init(){ image = (ImageView) findViewById(R.id.image01_main); image.setOnTouchListener(this); refresh = (Button) findViewById(R.id.btn01_main); ablum = (Button) findViewById(R.id.btn02_main); p = new Paint(); p.setColor(Color.RED); p.setStrokeWidth(5); p1 = new Paint(); p1.setColor(Color.GREEN); p1.setStrokeWidth(5); p1.setStyle(Paint.Style.STROKE); path = new Path(); } private void initCanvas(){// if (baseBitmap==null){ //新建一个空的Bitmap baseBitmap = Bitmap.createBitmap(image.getWidth(), image.getHeight(), Bitmap.Config.ARGB_8888); bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.a2); canvas = new Canvas(baseBitmap); canvas.drawColor(Color.WHITE); canvas.drawBitmap(bitmap,new Matrix(),p);// } image.setImageBitmap(baseBitmap); } float startX; float startY; float mstartX1; float mstartY1; @Override public boolean onTouch(View v, MotionEvent event) { Log.d(TAG, "onTouch: "); initCanvas(); switch (event.getAction()&MotionEvent.ACTION_MASK){ case MotionEvent.ACTION_DOWN://按下第一个手指 startX = event.getX(); startY=event.getY(); mstartY1=0; mstartX1=0; Log.d(TAG, "按下第一个手指MotionEvent.ACTION_DOWN: "); Log.d(TAG, "按下第一个手指d的坐标: x "+startX+" y : "+startY); path.moveTo(startX,startY); break; case MotionEvent.ACTION_POINTER_DOWN: float startX1 = event.getX(0); float startY1=event.getY(0); float startX2 = event.getX(1); float startY2=event.getY(1); Log.d(TAG, "按下第二个手指MotionEvent.ACTION_POINTER_DOWN: "); Log.d(TAG, "按下第二个手指d的坐标: startX1: "+startX1+" startY1 y : "+startY1+" startX2 :"+startX2+" startY2 : "+startY2); if (mstartX1>0&&mstartY1>0){ path.lineTo(mstartX1,mstartY1); canvas.drawPath(path,p1); startX=mstartX1; startY=mstartY1; image.setImageBitmap(baseBitmap); } break; case MotionEvent.ACTION_MOVE: mstartX1 = event.getX(); mstartY1=event.getY(); Log.d(TAG, "按下第二个手指MotionEvent.ACTION_POINTER_DOWN: "); Log.d(TAG, "按下第二个手指d的坐标: mstartX1: "+mstartX1+" mstartY1 y : "+mstartY1); canvas.drawPath(path,p1); canvas.drawLine(startX,startY,mstartX1,mstartY1,p); image.setImageBitmap(baseBitmap); break; case MotionEvent.ACTION_UP: Log.d(TAG, "MotionEvent.ACTION_UP: "); path.close(); canvas.drawPath(path,p1); Log.d(TAG, "最后一个手指抬起来的时候的坐标 mstartX1: "+event.getX()+"-ss--"+mstartX1+"--mstartY1-"+event.getY()+" ss:"+mstartY1); image.setImageBitmap(baseBitmap); break; case MotionEvent.ACTION_POINTER_UP:// canvas.drawPath(path,p); Log.d(TAG, "第一根手指抬起来的时候MotionEvent.ACTION_POINTER_UP: "); break; } return true; } private void refreshImage(){ if (baseBitmap!=null){ baseBitmap = Bitmap.createBitmap(image.getWidth(), image.getHeight(), Bitmap.Config.ARGB_8888); bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.a2); canvas = new Canvas(baseBitmap); canvas.drawColor(Color.WHITE); canvas.drawBitmap(bitmap,new Matrix(),p); path.reset(); } image.setImageBitmap(baseBitmap); } }
0 0
- 两点触控--画多边形
- 两点触控
- 触控两点,onTouchEvent
- Android:一个两点触控的案例
- Android: 一个两点触控的案例
- Android: 一个两点触控的案例
- 两点
- poj3384-Feng Shui 求多边形上最远的两点(旋转卡壳算法)
- 通过C++实现判断点与多边形的关系和两点之间的距离
- cocos2d-x+lua 实现两点触控缩放
- GIS画多边形
- 画图板---画多边形代码
- CDC画多边形函数
- vml 动态画多边形
- OpenCV画多边形cvPolyLine
- 画多边形,拖动顶点
- openSCAD 画多边形 三角形
- matlab画三角形,多边形
- poj 1386 Play on Words 【图论-欧拉路】
- jsp request 乱码问题
- 文章标题
- 动作调用-SQL
- Qt的安装(Windows)
- 两点触控--画多边形
- 排序7:希尔排序
- POJ2142The Balance扩展欧几里得
- bzoj1416&1498: [NOI2006]神奇的口袋
- 数据库列 操作
- Leetcode Algorithm 062. Unique Paths
- Windows Hotkey control volume
- Java 链表的底层实现
- JavaScript学习笔记28-数组