经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » Android » 查看文章
ImageButton和ImageView设置点击透明区域不响应
来源:cnblogs  作者:Newby  时间:2018/9/25 19:59:54  对本文有异议
##思路 ImageView和ImageButton都可以设置background和设置src,两者的区别自行度娘。由于两者的不同,获取它们的图片资源的方法也不同。倘若设置的是background,那么需要先getBackground(),然后把获取到的Drawable强制转换为BitmapDrawable,就可以获取bitamp,最后判断event的点击坐标是否在bitmap像素范围里。倘若设置的是src,则需要先getDrawable(),后续步骤和上述一致。除上述方法外,还可以先获取getDrawingCache()然后getBitmap(),在此之前需要先设置setDrawingCacheEnabled(true),使用完毕后记得setDrawingCacheEnabled(false),防止内存泄漏。 ##方法一 ###设置的是background的情况下 如果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 } ``` ###设置的是src的情况下 把上述代码中的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); ```
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号