解决方案 »

  1.   

    你画bitmap时用到的xy坐标,代表了图片左上角的(X,Y)坐标,对应的右下角坐标就是加上图片的宽高(X+w,Y+h);
    ontouch里能得到点击的坐标,判断下点击的xy坐标是否在 X--->X+w 和 Y--->Y+h 之间就ok了
      

  2.   

    要看你的界面是怎么画的,如果是ImageView,或者ImageButton,那就直接监听onClick事件就好了吧
      

  3.   

    @Override
    public boolean onTouchEvent(MotionEvent event) {
    if(ARData.acc2!=3){
    int noshakeWidth = drawSetting.bitnoShake.getWidth()/2;
    int noshakeHeight = drawSetting.bitnoShake.getHeight()/2;
    int shakeWidth = drawSetting.bitShake.getWidth()/2;
    int shakeHeight = drawSetting.bitShake.getHeight()/2;
    Bitmap bitmap = Bitmap.createBitmap(getWidth(),getHeight(), Config.ARGB_8888) ;  
    Canvas canvas = new Canvas(bitmap);
    int downx = (int)event.getRawX();
    int downy = (int)event.getRawY();
    System.out.println("1+"+downx+"2+"+downy);
    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
    if((downx < canvas.getWidth()/2+noshakeWidth && downy < canvas.getHeight()/2+noshakeHeight)&&
    (downx > canvas.getWidth()/2-noshakeWidth && downy > canvas.getHeight()/2- noshakeHeight)){
    canvas.drawBitmap(drawSetting.bitnoShake,canvas.getWidth()/2-noshakeWidth,canvas.getHeight()/2-noshakeHeight,null);
    System.out.println("jjj");
    }else{
    canvas.drawBitmap(drawSetting.bitShake,canvas.getWidth()/2-shakeWidth,canvas.getHeight()/2-shakeHeight,null);
    System.out.println("lll");
    }
    System.out.println("3+"+canvas.getWidth()/2+noshakeWidth+"4+"+canvas.getHeight()/2+noshakeHeight);
    break;
    }
    }
    return super.onTouchEvent(event);
    }
    在view里面这样写,打印出来的getwidth和getheight大到离谱,居然有几万,是我哪里写错了吗
      

  4.   

    我上次做了一个项目,记得不太清除了。判断触发位置是否在图片中==》这个不用判断的,例如有一个ImageView image;直接image.setOnTouchListener(onTouchListener),这样只有点击图片中的位置才会触发事件的
      

  5.   

    你要用的是bitmap的width和height,不是画布canvas的
      

  6.   

    一样的 已经解决了 写一个变量 在ondraw方法里面更改图片就行了