Android画板案例

画板案例:

步骤:

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

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

    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;

           }

       });

步骤四:保存文件的操作,应用来对应button点击事件

/**

     * 保存文件的操作

     *

     * @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下载:

http://download.csdn.net/detail/u011936142/7452095

posted on 2017-06-19 09:11  ljbguanli  阅读(174)  评论(0编辑  收藏  举报