android bitmap的点击事件 求助 bitmap图片android 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你画bitmap时用到的xy坐标,代表了图片左上角的(X,Y)坐标,对应的右下角坐标就是加上图片的宽高(X+w,Y+h);ontouch里能得到点击的坐标,判断下点击的xy坐标是否在 X--->X+w 和 Y--->Y+h 之间就ok了 要看你的界面是怎么画的,如果是ImageView,或者ImageButton,那就直接监听onClick事件就好了吧 @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大到离谱,居然有几万,是我哪里写错了吗 我上次做了一个项目,记得不太清除了。判断触发位置是否在图片中==》这个不用判断的,例如有一个ImageView image;直接image.setOnTouchListener(onTouchListener),这样只有点击图片中的位置才会触发事件的 你要用的是bitmap的width和height,不是画布canvas的 一样的 已经解决了 写一个变量 在ondraw方法里面更改图片就行了 求教:利用adb在电脑和手机上进行文件传输 Android读取视频文件 关于android gridview美化问题 你们公司的框架都用什么啊? Android2.3系统安全设置? getContentLength()很奇怪的问题 如何跳转到保存联系人页面 android中的DatePickerDialog能不能一个activity里面存在两个的? 谢谢指导 怎么小球没运动 android模拟器无法开机 一加监听事件就出错了 使用百度地图时出现的问题
ontouch里能得到点击的坐标,判断下点击的xy坐标是否在 X--->X+w 和 Y--->Y+h 之间就ok了
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大到离谱,居然有几万,是我哪里写错了吗