原理:把图片画到一张透明图片上,把手触摸滑动部分透明化
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 不消耗
}
}