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

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

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实现简单的画画板相关推荐

  1. Android之Canvas画画板

    前几篇都涉及到了Canvas,Paint,Bitmap的结合使用,这里就不多说了~ 现在我要写的是画画板这个项目~ 项目效果: 1.画笔的颜色的随意更改 2.画笔的大小也可以随着拖动条的拖动而改变 3 ...

  2. 学习android 画板源代码,Android实现画画板案例

    郑州app开发画画板案例.布局代码是三个button和一个imagesview下面是图片. 布局代码就不展示了.下面是java代码. package cn.xhhkj.image; import an ...

  3. Android 实现图片画画板

    本文主要讲述了Android 实现图片画画板 设计项目布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk ...

  4. 电脑PHP动画制作画板,涂鸦板简单实现 Html5编写属于自己的画画板

    这篇文章主要教大家如何使用Html5编写属于自己的画画板,进行绘画.调整颜色等操作,感兴趣的小伙伴们可以参考一下 最近了解到html5强大的绘图功能让我惊奇,于是,写了个小玩意---涂鸦板,能实现功能 ...

  5. Android可滑动画板,Android实现画画板案例

    本文实例为大家分享了Android实现画画板的具体代码,供大家参考,具体内容如下 ① 准备一个布局文件 xmlns:tools="http://schemas.android.com/too ...

  6. Android简易实战教程--第二十四话《画画板》

    今天完成一个画画板. 首先来个布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android ...

  7. android 夜间模式代码,Android 超简单的夜间模式如何实现?

    原标题:Android 超简单的夜间模式如何实现? 本文作者 作者: 唐子玄 实现夜间模式有很多种方式,经过多次尝试,算是找到了一种性价比较高的方式. 1 主题方式 这是最正统的方式,但工作量巨大,因 ...

  8. iOS_24_画画板(含取色板)

    终于效果例如以下: 一.简单说明1.使用一个数组 strokesArr(笔画数组)记录全部笔画.数组中保存的是一个个的笔画字典,一个字典就是一个笔画.笔画字典中有三项:笔画的大小.颜色.pointsA ...

  9. iOS 使用UIBezierPath类实现随手画画板

    在上一篇文章中我介绍了 UIBezierPath类 介绍 ,下面这篇文章介绍一下如何通过这个类实现一个简单的随手画画板的简单程序demo,功能包括:划线(可以调整线条粗细,颜色),撤销笔画,回撤笔画, ...

最新文章

  1. 7 种 Javascript 常用设计模式学习笔记
  2. varnish缓存的配置优化(redhat5.4)
  3. 取出list中属性_你是否用过List<T>和List<?>?
  4. python基础学习1-计数器实例
  5. Redis数据结构详解之Set(三)
  6. FineUICore(基础版)v5.4.0已发布!
  7. height:auto 火狐没边框
  8. 模板:树上启发式合并(dsu on tree)
  9. mysql慢查询面试题_头条Java岗3面入职:事务+慢查询SQL+Redis+秒杀设计面试题等
  10. VisualVM提示检测不到本地JAVA程序
  11. vue页面回显数据_解决vue表单回显数据无法修改的问题
  12. H3C nat转换实验
  13. Go slice切片的“陷阱”和本质
  14. 基于VHD和grub4dos的秒还原系统
  15. 【报告分享】 2020中国女性梦幻职业白皮书-COSMO数字100 (附下载)
  16. jquery实现菜单点击左右滑动效果
  17. 实用机器学习-学习笔记
  18. 百度细雨算法2.0解读
  19. overleaf / latex 批量添加参考文献
  20. python数据分析面试题_面试题——Python数据分析与应用(补充:简答)

热门文章

  1. win7升级RDP8.1
  2. IntelliJ IDEA 206 个快捷键大全,动图演示!搬砖杠杠的!
  3. 基于java的springboot餐厅座位预定系统毕业设计springboot开题报告
  4. 【华为校园优招】华为苏研2日面试之旅
  5. mysql的real类型_MSSQL数据类型-浮点数据类型 (real、float、decimal、numeric)
  6. 求职面试经验分享,提高求职成功率
  7. DLL Hell(DLL地狱)浅谈
  8. 爬虫 — 大众点评商户信息的爬取和文字反爬
  9. 灰太狼的数据世界(一)
  10. 七牛云实时音视频通话集成