代码: 图片画画板
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button = (Button) findViewById(R.id.bt);
iv = (ImageView) findViewById(R.id.iv);
//设置画笔
paint = new Paint();
paint.setStrokeWidth(5);
paint.setColor(Color.GREEN);
//创建一个图片
bitmap = Bitmap.createBitmap(720, 942, Bitmap.Config.ARGB_8888);
//创建画布
canvas = new Canvas(bitmap);
canvas.drawColor(Color.WHITE);
//知道手指在屏幕上触摸的轨迹
iv.setOnTouchListener(new View.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(bitmap);
//手指离开屏幕的时候
case MotionEvent.ACTION_UP:
}
return true;
}
});
}
public void save(View view) throws IOException {
String fileName = "/data/" + System.currentTimeMillis() + ".jpg";
System.out.println(fileName);
File file = new File(fileName);
try {
FileOutputStream fos = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.close();
Toast.makeText(this, "保存图片成功", Toast.LENGTH_LONG).show();
/* //模拟一个消息,说系统sd卡被重新挂载了
Intent intent = new Intent();
intent.setAction(Intent.ACTION_MEDIA_MOUNTED);
intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));
sendBroadcast(intent);*/
//android 4.4以后使用下面来解决,限制了只有系统应用才有权限通过广播扫描sd卡
MediaScannerConnection.scanFile(this, new String[]{fileName}, null, null);
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "保存图片失败", Toast.LENGTH_SHORT).show();
}
}
}