1. 程式人生 > >Android 撕衣服Demo(OnTouchListener 應用)

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;

            }

        });

    }

}