1,布局
2,代码
【1】流程:
A,利用RelativeLayout 控件重叠的特性,设置两个image view
B,创建原图副本然后使用OnTaouchListener监听把移动的点变成透明
//[1]获取我们要操作的原图
Bitmap srcBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pre19);
//[2]获取原图的副本
final Bitmap copyBitmap = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(), srcBitmap.getConfig());
Paint paint = new Paint();
Canvas canvas = new Canvas(copyBitmap);
canvas.drawBitmap(srcBitmap, new Matrix(), paint);
//[3]把copybitmap的内容展示到iv上
iv.setImageBitmap(copyBitmap);
//[4]给iv设置触摸事件
iv.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE: //移动
//[5]当手指移动 让图片变透明
for (int i = -15; i < 15; i++) {
for (int j = -15; j < 15; j++) {
//[6]市面上的一些应用撕了一个圆 为了良好的用户体验 撕一个圆
if (Math.sqrt(i*i + j*j)<15) {
try {
copyBitmap.setPixel((int)event.getX()+i,(int)event.getY()+j, Color.TRANSPARENT);
//[7]记得更新ui
iv.setImageBitmap(copyBitmap);
} catch (Exception e) {
}
}
}
}
break;
}
return true;
}
});
}
}