两点触控--画多边形

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值