画画板实现起来其实很简单,我们只需要利用android给我们提供的Canvas类来操作就可以实现简单的画画功能

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

public class MainActivity extends Activity {private ImageView iv;private Bitmap baseBitmap;private Canvas canvas;private Paint paint;@Overrideprotected 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;@Overridepublic 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"/>


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






更多相关文章

  1. Android(安卓)背景图片重复平铺
  2. android上一些方法的区别和用法的注意事项
  3. Android之——Surface、SurfaceView与SurfaceHolder.Callback初
  4. Android(安卓)之多点触摸 手势拉伸放大缩小图片 并在ImageView上
  5. Android有效解决加载大图片时内存溢出的问题
  6. 【Android】Android实现截取当前屏幕图片并保存至SDCard
  7. android 10.0拍照显示并上传服务器
  8. android调用camera实现自定义照相
  9. Android异步加载图片,并缓存到SD卡

随机推荐

  1. Python第十天 print >> f,和fd.write()的
  2. 如何用位于括号外的逗号分隔字符串?
  3. 数组与矩阵---需要排序的最短子数组长度
  4. 如何为Google Cloud Endpoints方法生成py
  5. pyuthon高级技巧2
  6. python闭包变量迟邦定
  7. 廖雪峰Python教程 学习笔记3 hello.py
  8. 如果前面的任务成功,芹菜会运行任务
  9. Python简介及入门
  10. 函数参数中裸星号的目的是什么?