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();
}
}
}
android畫畫板
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.