package com.pas.takeoff; import java.util.Random; import java.util.Formatter.BigDecimalLayoutForm; import android.os.Bundle; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Matrix; import android.graphics.Paint; import android.view.Menu; import android.view.MotionEvent; import android.view.View; import android.view.WindowManager; import android.view.View.OnTouchListener; import android.widget.ImageView; public class MainActivity extends Activity { private ImageView iv_before; private Bitmap basebitmap; private Bitmap alterbitmap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv_before = (ImageView) findViewById(R.id.girl_before); // 圖像對象 basebitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.girl_before); alterbitmap = Bitmap.createBitmap(basebitmap.getWidth(), basebitmap.getHeight(), basebitmap.getConfig()); Canvas canvas = new Canvas(alterbitmap); Paint paint = new Paint(); paint.setStrokeWidth(5); paint.setColor(Color.BLACK); canvas.drawBitmap(basebitmap, new Matrix(), paint); iv_before.setImageBitmap(alterbitmap); // 得知手指移動軌跡 iv_before.setOnTouchListener(new OnTouchListener() { // 手指開始的座標 int startX = 0; int startY = 0; @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { // 首次接觸屏幕 case MotionEvent.ACTION_DOWN: System.out.println("手指按下……"); startX = (int) event.getX(); startY = (int) event.getY(); alterbitmap.setPixel(startX, startY, Color.TRANSPARENT); break; // 手指移動 case MotionEvent.ACTION_MOVE: System.out.println("手指移動……"); int newX = (int) event.getX(); int newY = (int) event.getY(); // 覆蓋度區域置爲透明 for (int i = -10; i < 11; i++) { for (int j = -10; j < 11; j++) { int x = newX + i; int y = newY + j; if (x >= alterbitmap.getWidth() || y >= alterbitmap.getHeight() || x < 0 || y < 0) { continue; } else { alterbitmap.setPixel(x, y, Color.TRANSPARENT); } } } iv_before.setImageBitmap(alterbitmap); break; default: break; } return true; } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }