Android 撕衣服Demo(OnTouchListener 应用)

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;

            }

        });

    }

}

























猜你喜欢

转载自blog.csdn.net/Cricket_7/article/details/84977748