制作随手涂鸦
public class MainActivity extends Activity implements OnClickListener {
private Paint paint;
private Canvas canvas;
private ImageView iv;
private Bitmap bitmap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
View black = findViewById(R.id.view_black);
View bule = findViewById(R.id.view_bule);
View gray = findViewById(R.id.view_gray);
View green = findViewById(R.id.view_green);
View indigo = findViewById(R.id.view_indigo);
View orange = findViewById(R.id.view_orange);
View purple = findViewById(R.id.view_purple);
View red = findViewById(R.id.view_red);
View yellow = findViewById(R.id.view_yellow);
bule.setOnClickListener(this);
black.setOnClickListener(this);
gray.setOnClickListener(this);
green.setOnClickListener(this);
indigo.setOnClickListener(this);
orange.setOnClickListener(this);
purple.setOnClickListener(this);
red.setOnClickListener(this);
yellow.setOnClickListener(this);
iv = (ImageView) findViewById(R.id.iv);
SeekBar sb = (SeekBar) findViewById(R.id.sb);
//创建图片副本
bitmap = Bitmap.createBitmap(500, 500, Bitmap.Config.ARGB_8888);
//开始编辑
canvas = new Canvas(bitmap);
canvas.drawColor(Color.WHITE);
Matrix matrix = new Matrix();
paint = new Paint();
canvas.drawBitmap(bitmap, matrix, paint);
iv.setImageBitmap(bitmap);
sb.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
// 设置笔的大小
paint.setStrokeWidth(seekBar.getProgress());
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO Auto-generated method stub
}
});
iv.setOnTouchListener(new OnTouchListener() {
float downX;
float downY;
float moveX;
float moveY;
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
downX = event.getX();
downY = event.getY();
break;
case MotionEvent.ACTION_MOVE:
moveX = event.getX();
moveY = event.getY();
//开始做画
canvas.drawLine(downX, downY, moveX, moveY, paint);
iv.setImageBitmap(bitmap);
downX = moveX;
downY = moveY;
break;
case MotionEvent.ACTION_UP:
break;
default:
break;
}
return true;
}
});
}
@Override
public void onClick(View v) {
// 给画笔设置颜色
switch (v.getId()) {
case R.id.view_black:
paint.setColor(Color.BLACK);
break;
case R.id.view_bule:
paint.setColor(Color.BLUE);
break;
case R.id.view_gray:
paint.setColor(Color.GRAY);
break;
case R.id.view_green:
paint.setColor(Color.GREEN);
break;
case R.id.view_indigo:
paint.setColor(0xff00ffff);
break;
case R.id.view_orange:
paint.setColor(0xffff9900);
break;
case R.id.view_purple:
paint.setColor(0xffff00ff);
break;
case R.id.view_red:
paint.setColor(Color.RED);
break;
case R.id.view_yellow:
paint.setColor(Color.YELLOW);
break;
default:
break;
}
}
@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;
}
//菜单保存与清除
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
File file = new File("/mnt/sdcard/" + System.currentTimeMillis()
+ ".jpg");
if (item.getItemId() == R.id.action_clear) {
canvas.drawColor(Color.WHITE);
iv.setImageBitmap(bitmap);
} else {
try {
FileOutputStream stream = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
//发送广播让系统重新刷新指定图片
Intent intent =new Intent();
intent.setAction(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri uri=Uri.fromFile(file);
intent.setData(uri);
sendBroadcast(intent);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return super.onOptionsItemSelected(item);
}
}