Android 撕衣服Demo(OnTouchListener 應用)
阿新 • • 發佈:2018-12-14
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; } }); } }