欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

android实现简单的画画板实例代码

程序员文章站 2022-06-29 09:28:23
直接看代码,注释都写清楚了 复制代码 代码如下:public class mainactivity extends activity { private ima...

直接看代码,注释都写清楚了

复制代码 代码如下:

public class mainactivity extends activity {
 private imageview iv;
 private bitmap basebitmap;
 private canvas canvas;
 private paint paint;

 @override
 protected void oncreate(bundle savedinstancestate) {
  super.oncreate(savedinstancestate);
  setcontentview(r.layout.activity_main);
  this.iv = (imageview) this.findviewbyid(r.id.iv);
  // 创建一张空白图片
  basebitmap = bitmap.createbitmap(480, 640, bitmap.config.argb_8888);
  // 创建一张画布
  canvas = new canvas(basebitmap);
  // 画布背景为灰色
  canvas.drawcolor(color.gray);
  // 创建画笔
  paint = new paint();
  // 画笔颜色为红色
  paint.setcolor(color.red);
  // 宽度5个像素
  paint.setstrokewidth(5);
  // 先将灰色背景画上
  canvas.drawbitmap(basebitmap, new matrix(), paint);
  iv.setimagebitmap(basebitmap);

  iv.setontouchlistener(new ontouchlistener() {
   int startx;
   int starty;

   @override
   public boolean ontouch(view v, motionevent event) {
    switch (event.getaction()) {
    case motionevent.action_down:
     // 获取手按下时的坐标
     startx = (int) event.getx();
     starty = (int) event.gety();
     break;
    case motionevent.action_move:
     // 获取手移动后的坐标
     int stopx = (int) event.getx();
     int stopy = (int) event.gety();
     // 在开始和结束坐标间画一条线
     canvas.drawline(startx, starty, stopx, stopy, paint);
     // 实时更新开始坐标
     startx = (int) event.getx();
     starty = (int) event.gety();
     iv.setimagebitmap(basebitmap);
     break;
    }
    return true;
   }
  });
 }

 public void save(view view) {
  try {
   file file = new file(environment.getexternalstoragedirectory(),
     system.currenttimemillis() + ".jpg");
   outputstream stream = new fileoutputstream(file);
   basebitmap.compress(compressformat.jpeg, 100, stream);
   stream.close();
   // 模拟一个广播,通知系统sdcard被挂载
   intent intent = new intent();
   intent.setaction(intent.action_media_mounted);
   intent.setdata(uri.fromfile(environment
     .getexternalstoragedirectory()));
   sendbroadcast(intent);

   toast.maketext(this, "保存图片成功", 0).show();
  } catch (exception e) {
   toast.maketext(this, "保存图片失败", 0).show();
   e.printstacktrace();
  }
 }

}

简单的布局文件

复制代码 代码如下:

<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".mainactivity" >

    <button
        android:id="@+id/button1"
        android:onclick="save"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignparentbottom="true"
        android:text="保存图片" />

    <imageview
        android:layout_above="@id/button1"
        android:id="@+id/iv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />

</relativelayout>

再来个权限

复制代码 代码如下:

<uses-permission android:name="android.permission.write_external_storage"/>

上两张我画的高端大气上档次的图片。。。。

android实现简单的画画板实例代码

android实现简单的画画板实例代码