public class MainActivity extends ActionBarActivity {
private ImageView iv;
private Bitmap srcbmp;
private Bitmap alterBmp;
private Canvas canvas;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv = (ImageView) findViewById(R.id.iv);
srcbmp = BitmapFactory.decodeResource(getResources(), R.drawable.pre);
alterBmp = Bitmap.createBitmap(srcbmp.getWidth(), srcbmp.getHeight(), srcbmp.getConfig());
canvas = new Canvas(alterBmp);
Paint paint = new Paint();
paint.setColor(Color.BLACK);
Matrix matrix = new Matrix();
canvas.drawBitmap(srcbmp, matrix, paint);
iv.setImageBitmap(alterBmp);
iv.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
// event.getRawX(); 离屏幕的距离
int x = (int) event.getX();
int y = (int) event.getY();
System.out.println("设置(" + x + "," + y + ")为透明");
for (int i = -4; i < 5; i++) {
for (int j = -4; j < 5; j++) {
try {
alterBmp.setPixel(x + i, y + j, 0);
} catch (Exception e) {
e.printStackTrace();
}
}
}
iv.setImageBitmap(alterBmp);
break;
case MotionEvent.ACTION_UP:
// MediaPlayer.create(getApplicationContext(), R.raw.higirl
// ).start();
break;
}
return true; // 可以重复循环的处理事件
}
});
}
}
初学者,请各位高手指点。谢啦
这个黄色想法的代码原理没搞清。估计是荷尔蒙冲量太大,忘记了要实现此功能,这图片是要有分层的,而且代码也不会这么简单。
现在用的是普通图片,只能展现某块区域的像素被删除。
你设置的画笔paint 颜色为黑色 和背景颜色不一样,你要达到类似通明的感觉,你得将背景和画笔的颜色弄清楚
还有就是 你就一张图片是弄不出 这个功能的, 这种撕衣服的功能,最低层还是有一张 ××的图片,你删掉的只是上层的衣服而已
paint.setColor(Color.BLACK);
换成
paint.setColor(Color.TRANSPARENT);
试试
醉了,这个东西。直接覆盖透明应该也没用吧,
1.原封不动的复制了楼主的代码。
实测结果是透明。
2.不知道为什么楼主的结果是黑色。
楼主用 bitmap.getConfig()检查下图片是不是#ARGB 的吧。
3.或者用这上传的图片试试?
![
![