android橡皮擦擦图片功能

来源:互联网 发布:飞翔快递软件 编辑:程序博客网 时间:2024/05/17 07:34

 原理:把图片画到一张透明图片上,把手触摸滑动部分透明化



  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 不消耗    }}
1 0
原创粉丝点击