本文主要讲述了Android 实现图片画画板

设计项目布局:

<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"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><ImageViewandroid:layout_above="@+id/bt"android:id="@+id/iv"android:layout_width="fill_parent"android:layout_height="fill_parent" /><Buttonandroid:id="@+id/bt"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:onClick="save"android:text="保存图片" /></RelativeLayout>

首先实现画图功能:

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);iv = (ImageView) findViewById(R.id.iv);paint = new Paint();paint.setStrokeWidth(5);paint.setColor(Color.GREEN);// 创建一个可以被修改的bitmapbaseBitmap = Bitmap.createBitmap(320, 360,Bitmap.Config.ARGB_8888);System.out.println("图宽度:"+iv.getWidth());System.out.println("图高度:"+iv.getHeight());canvas = new Canvas(baseBitmap);canvas.drawColor(Color.WHITE);// 知道用户手指在屏幕上移动的轨迹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 newX = (int) event.getX();int newY = (int) event.getY();canvas.drawLine(startX, startY, newX, newY, paint);// 重新更新画笔的开始位置startX = (int) event.getX();startY = (int) event.getY();iv.setImageBitmap(baseBitmap);break;case MotionEvent.ACTION_UP: // 手指离开屏幕break;default:break;}return true;}});}public void save(View view) {}}

接下来完成保存图片的功能:

    public void save(View view) {try {File file = new File(Environment.getExternalStorageDirectory(),System.currentTimeMillis() + ".jpg");FileOutputStream stream = new FileOutputStream(file);baseBitmap.compress(CompressFormat.JPEG, 100, stream);stream.close();Toast.makeText(this, "保存图片成功", 1).show();//模拟一个消息通知系统sd卡被重新挂载了Intent intent = new Intent();intent.setAction(intent.ACTION_MEDIA_MOUNTED);intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));sendBroadcast(intent);} catch (Exception e) {Toast.makeText(this, "保存图片失败", 1).show();e.printStackTrace();}}

Android 实现图片画画板相关推荐

  1. Android之Canvas画画板

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

  2. Android在图片画线(放大,旋转,平移后可继续正确画线,限制画线区域)

    最近因为公司业务需求,需要给学校的老师们做一个在手机和电脑上同步进行图片上画线批注的效果.刚开始在github上看了几天, 但跟我们要求吻合的开源项目几乎没有.最后只能自己来实现一个相应的功能,经过一 ...

  3. Android -- 图片画画板(canvas、paint、bitmap)

    布局文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:too ...

  4. Android可滑动画板,Android 利用 Canvas 画画板

    首先新建一个项目工程,建立文件,如下图所示 首先配置页面布局文件activity_main.xml,如下图所示: xmlns:tools="http://schemas.android.co ...

  5. Android小应用-----画画板

    public class MainActivity extends Activity {private ImageView iv;float startX = 0;float startY = 0;/ ...

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

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

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

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

  8. android实现简单的画画板

    画画板实现起来其实很简单,我们只需要利用android给我们提供的Canvas类来操作就可以实现简单的画画功能 直接看代码,注释都写清楚了 public class MainActivity exte ...

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

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

最新文章

  1. 如何精确测量一段代码的执行时间
  2. 华为云家庭视频监控帮你一起守护家
  3. CVPR 2021 双目图像压缩最新进展
  4. nik collection滤镜
  5. 怎么用python写数据库_如何使用python对数据库(mysql)进行操作
  6. FFmpeg Filter基本使用
  7. Redis(三):Redis基础知识与常用命令
  8. python ftp服务器限速_python实现ftp服务器
  9. c语言如何引用一维数组,C语言一维数组的定义和引用
  10. AsyncTask的基本使用
  11. 五大常用算法学习笔记
  12. ShuffleNet在Caffe框架下的实现
  13. hb运行到微信小程序出现报错:[微信小程序开发者工具] ? Enable IDE Service (y/N) 
  14. 抖音壁纸小程序搭建教程
  15. SpringBoot系列
  16. Linux操作系统基础知识命令参数详解
  17. 12种编程语言训练,开源的AI “程序员”来了,CMU出品
  18. ant design 动态给a-input设置默认值
  19. Color correction matrix(色彩矩阵)的学习思考
  20. 普歌+阿里云视频点播错误修改

热门文章

  1. SQL2005创建快照
  2. mysql-5.7.17.msi安装
  3. 云计算之openstack(N版)neutron网络服务最佳实践
  4. inode及硬链接和软链接
  5. 瑞星09年第一季度安全报告:8亿网民遭木马攻击
  6. 一起谈.NET技术,Linq学习笔记
  7. 查看MySQL数据库中每个表占用的空间大小
  8. LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据
  9. docker专题(2):docker常用管理命令(下)
  10. 修炼Python基础篇-set学习