android画笔移位解决

  • 问题描述

    • 画笔的触点和画板的上的图不是吻合的:触点和实际的线条之间存在距离
    • 图示
  • 问题出现的原因
    • 控件的大小和图片的大小不吻合
    • 图示
  • 解决方案
    1. 当onCreate方法执行完后,获取控件的width和height属性
    2. 然后设置给画布的width和height
  • 实际操作的关键代码

    • 布局设置(内容填充控件)

      <ImageViewandroid:id="@+id/huabu"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="5dp"android:background="#ffffff" />
      
    • 关键代码【代码为主要代码,有错误的地方为全局变量,这里没做粘贴】

      LinearLayout lll_img = (LinearLayout) this.findViewById(R.id.lll_img);// 线性布局控件
      ViewTreeObserver vto = lll_img.getViewTreeObserver();
      vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {@Overridepublic void onGlobalLayout() {lll_img.getViewTreeObserver().removeGlobalOnLayoutListener(this);// 获取线性布局控件的高height = lll_img.getHeight();// 获取线性布局控件的宽width = lll_img.getWidth();// 将画布的宽高和控件的宽高设置成一样的baseBitmap = Bitmap.createBitmap(width, height,Bitmap.Config.ARGB_8888);// 创建一张画布canvas = new Canvas(baseBitmap);// 画布和位图绑定--相当于实时显示// 画布背景为白色canvas.drawColor(Color.WHITE);// 创建画笔paint = new Paint();// 设置防止锯齿paint.setAntiAlias(true);// 画笔颜色为红色paint.setColor(Color.BLACK);// 宽度5个像素paint.setStrokeWidth(WIDTH);// 接缝处圆滑paint.setStrokeCap(Paint.Cap.ROUND);paint.setStrokeJoin(Paint.Join.ROUND);// 先将白色背景画上--Matrix用于在绘制位图时转换的矩阵canvas.drawBitmap(baseBitmap, new Matrix(), paint);huabu.setImageBitmap(baseBitmap);}
      });
      

补充

  • 其他的解决方案

    1. 自己测量,丰衣足食【这种方案亲自测试,但不如所愿,这里仅做参考】

      int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
      int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
      imageView.measure(w,h);
      int height = imageView.getMeasuredHeight();
      int width = imageView.getMeasuredWidth();
      
    2. 监听回调
      ViewTreeObserver vto = imageView.getViewTreeObserver();
      vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {public boolean onPreDraw() {vto.removeOnPreDrawListener(this);int height = imageView.getMeasuredHeight();int width = imageView.getMeasuredWidth();return true;}
      });         

android画笔移位解决相关推荐

  1. Android滑动冲突解决方法

    Android滑动冲突解决方法 滑动冲突 首先讲解一下什么是滑动冲突.当你需要在一个ScrollView中嵌套使用ListView或者RecyclerView的时候你会发现只有ScrollView能够 ...

  2. Android 7.0解决抓取不到https请求的问题

    Android 7.0解决抓取不到https请求的问题 参考文章: (1)Android 7.0解决抓取不到https请求的问题 (2)https://www.cnblogs.com/meitian/ ...

  3. 另类vs2015+xamarin 的android界面乱码 解决

    另类vs2015+xamarin 的android界面乱码 解决 原文:另类vs2015+xamarin 的android界面乱码 解决 text.Text += "验证key 验证出错! ...

  4. Android Bitmap OutOfMemory 解决办法

    Android Bitmap OutOfMemory 解决办法 置顶 2014年07月01日 14:41:22 阅读数:3072 标签: OutOfMemoryBitmapandroid图片优化更多 ...

  5. Android studio 快速解决Gradle's dependency cache may be corrupt 和 Gradle配置 gradle-3.*-all.zip快速下载

    用了好久的AS了,官方版本更新,各种配置工具 也跟着更新.更新后导入工程时(使用Android工程编译或者导入新的工程没有对应的gradle版本)一些电脑出现一下问题. Error:Failed to ...

  6. QT for android 比较完美解决 全屏问题

    QT for android 比较完美解决 全屏问题 参考文章: (1)QT for android 比较完美解决 全屏问题 (2)https://www.cnblogs.com/wuyaSama/p ...

  7. Android中如何解决输入法键盘和activity页面遮挡的问题

    Android中如何解决输入法键盘和activity页面遮挡的问题 参考文章: (1)Android中如何解决输入法键盘和activity页面遮挡的问题 (2)https://www.cnblogs. ...

  8. 【android studio】解决android studio drawable新建项目时只有一个drawable目录的问题

    [android studio]解决android studio drawable新建项目时只有一个drawable目录的问题 参考文章: (1)[android studio]解决android s ...

  9. Android学习笔记----解决“com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536”问题

    Android学习笔记----解决"com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 6553 ...

最新文章

  1. Hanoi塔(分治法的应用)
  2. maven显示1.5版本过期的解决办法
  3. 如何在鼠标hover时改变标注的样式
  4. openresty开发系列27--openresty中封装redis操作
  5. Pycharm 折叠展开代码快捷键
  6. Hadoop hdfs 使用流来下载文件数据代码示例
  7. 拉取远程分支到本地分支_保险公司在本地没有分支机构可以投保吗?异地投保会影响理赔吗?...
  8. React开发(212):react中高阶组件转发refs
  9. C++11 标准新特性: 右值引用与转移语义(点评)
  10. vbscript html 在线,在HTML中使用VBScript可用三种方法
  11. 详解Android动画之Tween Animation
  12. 学编程决不可心浮气燥(转)
  13. 去除移动端alert/confirm的网址(url)
  14. Java分布式面试题及答案,附架构师必备技术详解
  15. 元气骑士机器人的成就皮肤_元气骑士:5把特殊“红武”,想要机器人的皮肤,用它就对了!...
  16. Appium desktop下载安装
  17. RANSAC算法筛选匹配点
  18. hspice linux 软件,转贴 hspice 在linux系统下的安装
  19. oracle arm版本,Oracle版本区别
  20. 【工商银行科技菁英计划笔试】压缩字符串

热门文章

  1. 中海岸不干胶标签,自由定制的标签
  2. maven更新JRE更改JSE1.5
  3. Jetson Xavier NX apt更换国内源
  4. 【直播回放PPT】企业架构与数字化转型
  5. 宝塔Linux搭建python行不,利用宝塔+python+搭建falsk项目
  6. Java-理论知识之串行化
  7. 野三坡龙门天关部分图片
  8. 亚洲名人人脸数据库制作
  9. 最新版wifi营销分销流量主前后端+小程序源码+搭建教程
  10. Navicat数据库复制的两种方式