protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn1 = (Button) findViewById(R.id.btn1); iv = (ImageView) findViewById(R.id.iv); final Bitmap bitmap = BitmapFactory.decodeFile("/storage/sdcard/blank_500_500.png"); //只能在副本圖片上修改 final Bitmap copyBitmap = Bitmap.createBitmap(bitmap.getWidth(),bitmap.getHeight(),bitmap.getConfig()); final Canvas canvas = new Canvas(copyBitmap); final Paint paint = new Paint(); paint.setColor(Color.RED); //線的寬度 paint.setStrokeWidth(6); if (bitmap != null) { iv.setImageBitmap(copyBitmap); } iv.setOnTouchListener(new View.OnTouchListener() { int startX = 0; int startY = 0; int endX = 0; int endY = 0; @Override public boolean onTouch(View v, MotionEvent event) { int action = event.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: startX = (int) event.getX(); startY = (int) event.getY(); case MotionEvent.ACTION_UP: break; case MotionEvent.ACTION_MOVE: endX = (int) event.getX(); endY = (int) event.getY(); canvas.drawLine(startX,startY,endX,endY,paint); startX = endX; startY = endY; iv.setImageBitmap(copyBitmap); } return true;//true } }); btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { OutputStream os = null; try { os = new FileOutputStream(new File("/storage/sdcard/"+ SystemClock.uptimeMillis()+".jpg")); } catch (FileNotFoundException e) { e.printStackTrace(); } copyBitmap.compress(Bitmap.CompressFormat.JPEG, 100, os); Log.i(TAG, "onClick: " + Environment.getExternalStorageDirectory()); File dir = Environment.getExternalStorageDirectory(); ArrayList list = new ArrayList(); if (dir.isDirectory()) { File[] files = dir.listFiles(); for (int i = 0; i < files.length; i++) { list.add(files[i].getAbsolutePath()); } } String[] paths = new String[list.size()]; list.toArray(paths); MediaScannerConnection.scanFile(MainActivity.this, paths, null, null); } }); }