项目突然用到涂鸦的功能,网上的Demo背景都是空白的,还有好多BUG,就自己搞了一个,好了不多说了,进入正题,所谓涂鸦就是利用安卓的绘画功能在画布上进行操作,直接上代码吧

/**

*初始化组件

*/

private void init() {

mPaint=newPaint();

mPaint.setAntiAlias(true);//去除锯齿

mPaint.setStrokeWidth(5);//默认画笔粗细

mPaint.setStyle(Paint.Style.STROKE);//这只画笔的风格为空心的

mPaint.setColor(Color.BLACK);//设置画笔的默认颜色

mPath=newPath();

//穿件一个空白的画板背景

mBitmap= Bitmap.createBitmap(screenWidth,screenHeight, Bitmap.Config.ARGB_8888);

Log.i("gaodu",screenHeight+"a");

mCanvas=newCanvas(mBitmap);

mCanvas.drawColor(bg);//设置画板背景的颜色,默认为白色

}

创建画布背景所需的Bitmap后需要给他drawColor否则得到的图片是透明的

然后就是

@Override

protected voidonDraw(Canvas canvas) {

canvas.drawBitmap(mBitmap,0,0,null);

canvas.drawPath(mPath,mPaint);

}

此处不做过多的描述,应该都懂;

以下是最重要的一点,通过onTouchEvent方法划线

@Override

public booleanonTouchEvent(MotionEvent event) {

floatx = event.getX();//得到点击的位置相对于该组件左上角的位置的X坐标

floaty = event.getY();//得到点击的位置相对于该组件左上角的位置的Y坐标

switch(event.getAction()) {

caseMotionEvent.ACTION_DOWN:

currentX= x;

currentY= y;

mPath.moveTo(currentX,currentY);//设置画笔的位置

break;

caseMotionEvent.ACTION_MOVE:

currentX= x;

currentY= y;

mPath.quadTo(currentX,currentY, x, y);//画线

break;

caseMotionEvent.ACTION_UP:

mCanvas.drawPath(mPath,mPaint);

Log.i("高度", y +" c");

break;

}

invalidate();

return true;

}

画完后就剩下取得画板上面的图片了,往下看:

//缩放生成图片

publicBitmap resizeImage(Bitmap bitmap,intwidth,intheight) {

intoriginWidth = bitmap.getWidth();

intoriginHeight = bitmap.getHeight();

floatscaleWidth = ((float) width) / originWidth;

floatscaleHeight = ((float) height) / originHeight;

Matrix matrix =newMatrix();

matrix.postScale(scaleWidth, scaleHeight);

Bitmap resizedBitmap = Bitmap.createBitmap(bitmap,0,0,screenWidth,

getBottom() - getTop(), matrix,true);//截取图像

returnresizedBitmap;

}

截取图像需要特别注意,需要用坐标截取;

然后需要清除功能的不要错过:

if(mCanvas!=null) {

mPath.reset();

mCanvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);

mCanvas.drawColor(bg);

invalidate();

}

OK,准备搞定了,接下来调用它吧:

mPaintView=newTuYaView(this, screenWidth, screenHeight);

mPaintView.setPaintColor(Color.BLACK);

mPaintView.setPaintSize(20);

mPaintView.setBackGround(Color.WHITE);

mFrameLayout.addView(mPaintView);

mPaintView.requestFocus();

好了,完了,希望对大家有帮助,写的不好多多包涵。。。

android 图片字体涂鸦,android 涂鸦功能相关推荐

  1. android 图片字体涂鸦,美字自定义涂鸦图形

    美字自定义涂鸦图形app是一款非常强大的字体美化软件.美字自定义涂鸦图形软件使用非常简单,自定义书写美字自定义涂鸦图形涂鸦文字之后就能设置字体大小,美化你的字体! 软件介绍 美字自定义涂鸦图形app是 ...

  2. Android通知栏字体大小,Android通知栏介绍与适配总结(上篇)

    此文已由作者黎星授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 由于历史原因,Android在发布之初对通知栏Notification的设计相当简单,而如今面对各式各样的通知 ...

  3. android开发字体样式,Android开发中修改程序字体的样式

    Android提供三种字体:"Sans","serif"和"monospace". 1.在Android XML文件中设置字体 可以采用an ...

  4. android程序字体大小,Android如何动态调整应用字体大小详解

    前言 为什么要动态设置字体大小?由于项目面对的是中老年客户项目中自带的字体无法满足客户需求. Android应用字体大小默认随系统设置的字体大小而变化,但您可能不希望您的应用字体大小随系统设置变化,想 ...

  5. android程序字体大小,Android 动态调整应用字体大小

    Android应用字体大小默认随系统设置的字体大小而变化,但您可能不希望您的应用字体大小随系统设置变化,想要自己控制,例如微信.本文简单介绍一下如何实现应用字体大小动态调整而不是依赖系统设置 字体大小 ...

  6. Android图片系列-2.Android App图片压缩、裁剪分析整理

    移动端常用的图片格式有PNG和JPEG,目前ios手机和大部分安卓手机拍照生成的图片默认格式都是JPEG.我们开发APP的时候通常使用的是PNG,这可能是考虑到图片质量效果.PNG图片是无损压缩格式, ...

  7. 小米7.0 android 图片裁剪失败,Android 7.0适配 -- FileProvider 拍照、选择相册、裁切图片, 小米机型适配...

    需求: 最近把APP的TargetSdk从21提高至25后,测试时, 在Android7.0以上的系统上,爆出了一些异常. 在个别小米等机型也存在一些异常. 问题分析: FileUriExposedE ...

  8. android textview 字体阴影,Android TextView加上阴影效果

    废话不多说直接说关键的: 字体阴影需要四个相关参数: 1. android:shadowColor:阴影的颜色2. android:shadowDx:水平方向上的偏移量3. android:shado ...

  9. android list字体大小,android自定义ListPreference字体大小

    这篇博客算是自己的一个记录吧,组长给了一个任务,需要实现一个紧急广播的一系列设置功能,但是客户那边设置界面的字体大小有特殊的要求,看了一下,对于ListPreference这样的控件,android系 ...

  10. android图片缩放动画,Android动画共享元素(例列表图片放大到详情图片动画)

    一.什么是共享元素 简单来说共享元素就是两个Activity中都拥有此元素,在第二个Activity中进行强调而展示一些的动画效果.例如圆按钮的漂移动画.图片的放大动画. 二.为什么使用共享元素 主要 ...

最新文章

  1. 转: C语言中位运算符异或“∧”的作用
  2. 注意力机制可视化_目标跟踪中的(STAM)时空注意力机制
  3. linux ftp用户指定多个目录,linux ftp服务器下用户限制目录的方法
  4. deprecated conversion from string constant to ‘char*’
  5. 纸上谈兵: 队列 (queue)
  6. js获取验证码倒计时60s(超简单)
  7. 基于微服务和Docker容器技术的PaaS云平台架构设计
  8. 600分左右的计算机院校,600分左右的985大学 性价比最高的学校
  9. phpQuery占用过多内存的解决方法
  10. 读懂复利“魔力” 30年让你成为千万富翁
  11. 2023年天津仁爱学院专升本考试考务费网上缴费的通知
  12. 第三十九期:1024特别版:向“程序媛们”致敬!
  13. FreeKD:Free-direction Knowledge Distillation for Graph Neural Networks
  14. Laravel+layui后台开发框架
  15. golang学习笔记(进阶篇)
  16. Spark读取Hdfs上的数据存储在Hbase的ETL过程
  17. cb32a_c++_STL_算法_查找算法_(5)adjacent_find
  18. pygame壁球游戏之节奏型操控型
  19. 3dmax制作楼梯栏杆
  20. 百度一键root android,百度一键root下载

热门文章

  1. 大数据分析技术有哪些
  2. 使用 axios 发送 http 请求
  3. 智能云解析DNS健康监测是如何实现的?-中科三方
  4. 加密市场的牛熊周期;NFT 定义的争论
  5. 李嘉诚:无霸气才能成霸业
  6. 软考中级软件设计笔记
  7. Inside Lucene/超人气搜索引擎学习(2.0)-读取索引
  8. 【mysql-日志】清理二进制日志文件
  9. no xxx to stop
  10. python自然语言分析_Python自然语言用金庸的武侠小说做分析和处理