Android--简单的画画板实例代码

简介: 版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/51149273 public ...
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/51149273
<span style="font-size:14px;">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();
  }
 }
}
</span>

简单的布局文件:

<span style="font-size:14px;"><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></span>
再来个权限:

<span style="font-size:14px;"><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/></span>



目录
相关文章
|
1月前
|
Ubuntu 网络协议 Java
【Android平板编程】远程Ubuntu服务器code-server编程写代码
【Android平板编程】远程Ubuntu服务器code-server编程写代码
|
1月前
|
Android开发
Android应用实例(一)之---有道辞典VZ.0
Android应用实例(一)之---有道辞典VZ.0
19 2
|
9天前
|
XML Java Android开发
Android应用中如何保护JAVA代码
Android应用中如何保护JAVA代码
5 0
|
19天前
|
移动开发 监控 Android开发
构建高效Android应用:从内存优化到电池寿命代码之美:从功能实现到艺术创作
【5月更文挑战第28天】 在移动开发领域,特别是针对Android系统,性能优化始终是关键议题之一。本文深入探讨了如何通过细致的内存管理和电池使用策略,提升Android应用的运行效率和用户体验。文章不仅涵盖了现代Android设备上常见的内存泄漏问题,还提出了有效的解决方案,包括代码级优化和使用工具进行诊断。同时,文中也详细阐述了如何通过减少不必要的后台服务、合理管理设备唤醒锁以及优化网络调用等手段延长应用的电池续航时间。这些方法和技术旨在帮助开发者构建更加健壮、高效的Android应用程序。
|
29天前
|
存储 设计模式 监控
88 PM撸代码之【Android四大基本组件】
88 PM撸代码之【Android四大基本组件】
21 0
|
29天前
|
Java Android开发
82 PM撸代码之Android【绝顶高手排行榜】
82 PM撸代码之Android【绝顶高手排行榜】
7 0
|
29天前
|
达摩院 安全 Java
80 PM撸代码之Android【武侠讲封装、继承、多态】
80 PM撸代码之Android【武侠讲封装、继承、多态】
27 0
|
29天前
|
算法 Java BI
79 PM撸代码之Android【武侠篇:面向对象基础】
79 PM撸代码之Android【武侠篇:面向对象基础】
19 0
|
29天前
|
XML 编解码 算法
76 PM撸代码之Android【宏观篇】
76 PM撸代码之Android【宏观篇】
24 0
|
1月前
|
Ubuntu Android开发 数据安全/隐私保护
【Android平板编程】远程Ubuntu服务器Code-Server编程写代码
【Android平板编程】远程Ubuntu服务器Code-Server编程写代码