android画板过程分析,Android画板案例

画板案例:

步骤:

步骤一:声明一些全局上使用的变量:

//接收布局文件上的图片显示控件

privateImageViewiv;

//声明一个可以用来编辑的bitmap

privateBitmapbaseBitmap;

//画布的声明

privateCanvascanvas;

//画笔的声明

privatePaintpaint;

步骤二:初始化声明的变量并设置一些属性:

//获取布局文件上的图片控件

iv= (ImageView) findViewById(R.id.iv);

//创建一个可以被修改的bitmap

// Bitmap.Config.ARGB_8888指定的是显示的色彩效果

baseBitmap= Bitmap.createBitmap(320, 360, Bitmap.Config.ARGB_8888);

//创建画布canvas

canvas=newCanvas(baseBitmap);

//设置背景

canvas.drawColor(Color.WHITE);

//获取画笔

paint=newPaint();

//设置画笔的像素点

paint.setStrokeWidth(2);

//设置画笔的颜色

paint.setColor(Color.BLACK);

步骤三:关键的步骤

//图片控件上添加一个触摸监听,用来监听用户的触摸轨迹

iv.setOnTouchListener(newOnTouchListener() {

//设置手指触摸的坐标点

floatstartX;

floatstartY;

/**

*

* @paramv

*            代表的是显示控件

* @paramevent

*            代表的是触摸的事件

*

* @seeandroid.view.View.OnTouchListener#onTouch(android.view.View,

*      android.view.MotionEvent)

*/

@Override

publicbooleanonTouch(View v, MotionEvent event) {

/*对触摸的事件进行判断*/

switch(event.getAction()) {

caseMotionEvent.ACTION_DOWN://手指第一次触摸屏幕

System.out.println("手指按下.............");

//获取开始的坐标点

startX= event.getX();

startY= event.getY();

break;

caseMotionEvent.ACTION_MOVE://手指在屏幕上的移动

System.out.println("手指移动.............");

//获取结束的坐标点(由于是移动的,所以这是适时改变的)

floatstopX = event.getX();

floatstopY = event.getY();

//在画布上作画

canvas.drawLine(startX,startY,

stopX, stopY,paint);

//画完后要对画笔的位置进行时时的更新

startX= event.getX();

startY= event.getY();

break;

caseMotionEvent.ACTION_UP://手指离开屏幕

System.out.println("手指离开.............");

break;

}

iv.setImageBitmap(baseBitmap);

//触摸事件的时时响应要更改为true

returntrue;

}

});

步骤四:保存文件的操作,应用来相应按钮点击事件

/**

* 保存文件的操作

*

* @paramView

*/

publicvoidsave(View View) {

try{

//创建文件

File file = newFile(Environment.getExternalStorageDirectory(),

System.currentTimeMillis() +".jpg");

FileOutputStream os =newFileOutputStream(file);

//压缩操作

baseBitmap.compress(CompressFormat.JPEG, 100, os);

os.close();

Toast.makeText(this,"保存成功.....",

Toast.LENGTH_SHORT).show();

//模拟消息,通知SD卡挂在的操作

Intent intent = newIntent();

intent.setAction(Intent.ACTION_MEDIA_MOUNTED);

intent.setData(Uri.fromFile(Environment

.getExternalStorageDirectory()));

sendBroadcast(intent);

} catch(Exception e) {

//TODOAuto-generatedcatch block

e.printStackTrace();

Toast.makeText(this,"保存失败.....",

Toast.LENGTH_SHORT).show();

}

}

DEMO下载:

原文:http://blog.csdn.net/dong_martin/article/details/28643259

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值