android橡皮擦擦图片功能
16lz
2021-01-26
原理:把图片画到一张透明图片上,把手触摸滑动部分透明化
public void onCreate() { //底边图片 ImageView ivTop = (ImageView) findViewByid(R.id.iv_top); Options opts = new Options(); //图片加载器,用于配置一些缩放比例,和像素单位 opts.inSampleSize = 2; //制定加载器把原图片的宽高缩放到2/1的效果加载 //获得外层图片,decodeResource方法默认获得的像素单位是RGB(red,green,blue),ARGB(alpha,red,green,blue) Bitmap topImage = BitmapFactory.decodeResources( getResource(),R.drawable.top, opts); //创建一张空白图片,并且把图片想读单位指定为:ARGB Bitmap blank = Bitmap.createBitmap(topImage.getWidth(), topImage.getHeight, Config.ARGB_4444); //把上边的topImage画到空白图片上 Canvas canvas = new Canvas(blank); //把topImage画到空白图片上但是像素单位变成ARGB() canvas.drawBitmap(topImage, 0, 0, null); ivTop.setImageBitmap(blank);}class MyOnTouchListoner implements OnTouchListener { @Override pulic boolean OnTouch(View v, MotionEvent event) { //是否是移动的事件 if (event.getAction() == MotionEvent.ACTION_MOVE) { //获得按下坐标 int x = (int) event.getX(); int y = (int) event.getY(); for (int i = x - 10; i < x + 10; i++) { for (int j = y - 10; j < y + 10; j++) { //防止超出边界 if (j >= 0 && blank.getHeight() && i >= 0 && i < blank.getWidth()) { blank.setPixel(i, j, Color.TRANSPARENT); } } } //修改后的图片设置给ImageView ivTop.setImageBitmap(blank); } return true; //true 消耗掉这次触摸事件.false 不消耗 }}
更多相关文章
- 图片加载框架(一):Glide
- Android——自定义ImageView实现圆形图片
- [置顶] Android(安卓)GridView宫格视图 之 BaseAdapter
- 【Android】android4.4从图库选择图片,获取图片路径并裁剪
- android-HttpClient上传信息(包括图片)到服务端
- android修改图片(修改图片大小,图片旋转,图片平移)
- android bitmap out of memory总结、心得
- MyAdapter
- 运用开源 achartengine 绘制android端的折线图片,多表显示