一. 运行效果以及源码

1.gif图效果

2.源码地址

撕衣服

二.主要的思路

  1. 屏幕是由ImageView(穿衣服)和ImageView(没有穿衣服)的两张图叠放在一起的,我们只需要将触摸的点的位置 转化为 穿了衣服的图片 上对应点的位置。将找到的区域的像素设置为透明,将修改后的图片重新设置为ImageView(穿衣服)的src,就达到了我们想要的效果。
  1. 那么,触摸的点对应的区域由 View 的 OnTouch 事件完成。如何修改图片的某一块像素为透明呢?由于无法对原图(原Bitmap)操作,所以我们选择将BItmap画到一个画布上(内容还是存储在Bitmap里面,Canvas只是一个媒介)。调用 Bitmap 自己的 public void setPixel(int x, int y, @ColorInt int color) ,设置某一点的颜色。(透明色:Color.TRANSPARENT)
  1. 还有一个需要注意的点,我们的图片设置到屏幕上面之后会被拉伸。所以,我们不可以直接把触摸到的点用于setPixel。我们需要的不是触摸到的点,而是触摸点的横纵坐标相对于显示的宽高的比例,这样我们就可以通过比例setPixel。