android畫畫板

public class MainActivity extends Activity {

	private ImageView iv;
	private Bitmap baseBitmap;
	private Canvas canvas;
	private Paint paint;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		iv = (ImageView)findViewById(R.id.iv);
		
		paint = new Paint();
		paint.setStrokeWidth(5);//畫筆的像素
		paint.setColor(Color.BLACK);//畫筆的顏色
		
		//此時ImageView iv還爲被創建,所以爲0,報錯
		//一般情況下直接指定
		baseBitmap = Bitmap.createBitmap(320,
				359, Config.RGB_565);
		canvas = new Canvas(baseBitmap);
		canvas.drawColor(Color.RED);
		
		//用戶在屏幕上移動的軌跡
		iv.setOnTouchListener(new OnTouchListener() {
			//定義手指開始位置的座標
			int startX;
			int startY;
			
			@Override
			public boolean onTouch(View v, MotionEvent event) {
		
				switch(event.getAction()){
				case MotionEvent.ACTION_DOWN://手指第一次接觸屏幕
					//創建一個可以被修改的Bitmap
					System.out.println("手指按下");
					
					System.out.println(iv.getWidth());
					System.out.println(iv.getHeight());
					
					startX = (int) event.getX();
					startY = (int) event.getY();
					break;
					
				case MotionEvent.ACTION_MOVE://手指在屏幕上滑動
					System.out.println("手指移動");
					int newX = (int) event.getX();
					int newY = (int) event.getY();
					
					canvas.drawLine(startX, startY, newX, newY, paint);
					
					//實時更新起始點
					startX = (int) event.getX();
					startY = (int) event.getY();
					iv.setImageBitmap(baseBitmap);
					break;
					
				case MotionEvent.ACTION_UP://手指離開屏幕
					System.out.println("手指擡起");
					break;
				}
				
				
				return true;//持續響應觸摸時間,true
			}
		});
	}
	
	public void save(View view){
		try {
			File file = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis()+".jpg");
			FileOutputStream outFile = new FileOutputStream(file);
			baseBitmap.compress(CompressFormat.JPEG, 100, outFile);
			outFile.close();
			
			//模擬一個消息通知系統sd卡被掛載
			Intent intent = new Intent();
			intent.setAction(Intent.ACTION_MEDIA_MOUNTED);//sd卡被掛載
			intent.setData(Uri.fromFile(Environment.getDownloadCacheDirectory()));
			sendBroadcast(intent);
			
			Toast.makeText(this, "圖片保存成功", Toast.LENGTH_LONG).show();
		} catch (Exception e) {
			Toast.makeText(this, "圖片保存失敗", Toast.LENGTH_LONG).show();
			e.printStackTrace();
		}
	
	}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章