画板案例:
步骤:
步骤一:声明一些全局上使用的变量:
//接收布局文件上的图片显示控件
private ImageViewiv;
//声明一个可以用来编辑的bitmap
private BitmapbaseBitmap;
//画布的声明
private Canvascanvas;
//画笔的声明
private Paintpaint;
步骤二:初始化声明的变量并设置一些属性:
// 获取布局文件上的图片控件
iv = (ImageView) findViewById(R.id.iv);
// 创建一个可以被修改的bitmap
// Bitmap.Config.ARGB_8888指定的是显示的色彩效果
baseBitmap = Bitmap.createBitmap(320, 360, Bitmap.Config.ARGB_8888);
// 创建画布canvas
canvas =new Canvas(baseBitmap);
// 设置背景
canvas.drawColor(Color.WHITE);
// 获取画笔
paint =new Paint();
// 设置画笔的像素点
paint.setStrokeWidth(2);
// 设置画笔的颜色
paint.setColor(Color.BLACK);
步骤三:关键的步骤
// 图片控件上添加一个触摸监听,用来监听用户的触摸轨迹
iv.setOnTouchListener(new OnTouchListener() {
//设置手指触摸的坐标点
floatstartX;
floatstartY;
/**
*
* @param v
* 代表的是显示控件
* @param event
* 代表的是触摸的事件
*
* @seeandroid.view.View.OnTouchListener#onTouch(android.view.View,
* android.view.MotionEvent)
*/
@Override
publicboolean onTouch(View v, MotionEvent event) {
/*对触摸的事件进行判断 */
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN://手指第一次触摸屏幕
System.out.println("手指按下.............");
//获取开始的坐标点
startX = event.getX();
startY = event.getY();
break;
case MotionEvent.ACTION_MOVE://手指在屏幕上的移动
System.out.println("手指移动.............");
//获取结束的坐标点(由于是移动的,所以这是适时改变的)
float stopX = event.getX();
float stopY = event.getY();
//在画布上作画
canvas.drawLine(startX,startY, stopX, stopY,paint);
//画完后要对画笔的位置进行时时的更新
startX = event.getX();
startY = event.getY();
break;
case MotionEvent.ACTION_UP://手指离开屏幕
System.out.println("手指离开.............");
break;
}
iv.setImageBitmap(baseBitmap);
//触摸事件的时时响应要更改为true
returntrue;
}
});
步骤四:保存文件的操作,应用来相应按钮点击事件
/**
* 保存文件的操作
*
* @param View
*/
publicvoid save(View View) {
try {
//创建文件
File file = new File(Environment.getExternalStorageDirectory(),
System.currentTimeMillis() +".jpg");
FileOutputStream os =new FileOutputStream(file);
//压缩操作
baseBitmap.compress(CompressFormat.JPEG, 100, os);
os.close();
Toast.makeText(this,"保存成功.....", Toast.LENGTH_SHORT).show();
//模拟消息,通知SD卡挂在的操作
Intent intent = new Intent();
intent.setAction(Intent.ACTION_MEDIA_MOUNTED);
intent.setData(Uri.fromFile(Environment
.getExternalStorageDirectory()));
sendBroadcast(intent);
} catch (Exception e) {
//TODO Auto-generatedcatch block
e.printStackTrace();
Toast.makeText(this,"保存失败.....", Toast.LENGTH_SHORT).show();
}
}
DEMO下载: