新邵县政府网,自制卫星电视接收器,特惠酒店联盟
imageview和imagebutton都可以设置background和设置src,两者的区别自行度娘。由于两者的不同,获取它们的图片资源的方法也不同。倘若设置的是background,那么需要先getbackground(),然后把获取到的drawable强制转换为bitmapdrawable,就可以获取bitamp,最后判断event的点击坐标是否在bitmap像素范围里。倘若设置的是src,则需要先getdrawable(),后续步骤和上述一致。除上述方法外,还可以先获取getdrawingcache()然后getbitmap(),在此之前需要先设置setdrawingcacheenabled(true),使用完毕后记得setdrawingcacheenabled(false),防止内存泄漏。
如果background是一张图片,则在ontouch中添加:
imageview imageview=(imageview)v; bitmapdrawable drawable=(bitmapdrawable)imageview.getbackground(); bitmap bitmap=drawable.getbitmap(); int x=(int) event.getx(); int y=(int)event.gety(); if(x>=bitmap.getwidth()||x<0||y>=bitmap.getheight()||y<0||bitmap.getpixel((x),(y))==0) { log.i("newby", "透明区域"); return true;//透明区域返回true }
如果background是一个selector,则在ontouch中添加:
imageview imageview=(imageview)v; bitmapdrawable drawable=(bitmapdrawable)(imageview.getbackground().getcurrent()); bitmap bitmap=drawable.getbitmap(); int x=(int) event.getx(); int y=(int)event.gety(); if(x>=bitmap.getwidth()||x<0||y>=bitmap.getheight()||y<0||bitmap.getpixel((x),(y))==0) { log.i("newby", "透明区域"); return true;//透明区域返回true }
把上述代码中的getbackground换成getdrawable即可。
imageview imageview=(imageview)v; imageview.setdrawingcacheenabled(true); bitmap bitmap=imageview.getdrawingcache(); int x=(int) event.getx(); int y=(int)event.gety(); if(x>=bitmap.getwidth()||x<0||y>=bitmap.getheight()||y<0||bitmap.getpixel((x),(y))==0) { log.i("newby", "透明区域"); return true;//透明区域返回true } //其他代码区域 imageview.setdrawingcacheenabled(false);
经过测试发现,当imageview或imagebutton的大小设置固定值的时候,会出现透明区域点击判断不正确的问题,因此,还需要对获取的图片进行缩放处理
public static bitmap newbitmap(bitmap bm, int width , int height){ int bmwidth = bm.getwidth(); int bmheight = bm.getheight(); float scalewidth = ((float) width) / bmwidth; float scaleheight = ((float) height) / bmheight; matrix matrix = new matrix(); matrix.postscale(scalewidth, scaleheight); bitmap newbm = bitmap.createbitmap(bm, 0, 0,bmwidth, bmheight, matrix, true); return newbm; }
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Android Manifest中meta-data扩展元素数据的配置与获取方式
Android实现获取meta-data和build.gradle的值
Android获取清单文件中的meta-data,解决碰到数值为null的问题
解决webview 第二次调用loadUrl页面不刷新的问题
解决Android WebView拦截url,视频播放加载失败的问题
Android webview加载https链接错误或无响应的解决
网友评论