android画笔移位解决
android画笔移位解决
- 问题描述
- 画笔的触点和画板的上的图不是吻合的:触点和实际的线条之间存在距离
- 图示
- 问题出现的原因
- 控件的大小和图片的大小不吻合
- 图示
- 解决方案
- 当onCreate方法执行完后,获取控件的width和height属性
- 然后设置给画布的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);} });
补充
- 其他的解决方案
- 自己测量,丰衣足食【这种方案亲自测试,但不如所愿,这里仅做参考】
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();
- 监听回调
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画笔移位解决相关推荐
- Android滑动冲突解决方法
Android滑动冲突解决方法 滑动冲突 首先讲解一下什么是滑动冲突.当你需要在一个ScrollView中嵌套使用ListView或者RecyclerView的时候你会发现只有ScrollView能够 ...
- Android 7.0解决抓取不到https请求的问题
Android 7.0解决抓取不到https请求的问题 参考文章: (1)Android 7.0解决抓取不到https请求的问题 (2)https://www.cnblogs.com/meitian/ ...
- 另类vs2015+xamarin 的android界面乱码 解决
另类vs2015+xamarin 的android界面乱码 解决 原文:另类vs2015+xamarin 的android界面乱码 解决 text.Text += "验证key 验证出错! ...
- Android Bitmap OutOfMemory 解决办法
Android Bitmap OutOfMemory 解决办法 置顶 2014年07月01日 14:41:22 阅读数:3072 标签: OutOfMemoryBitmapandroid图片优化更多 ...
- Android studio 快速解决Gradle's dependency cache may be corrupt 和 Gradle配置 gradle-3.*-all.zip快速下载
用了好久的AS了,官方版本更新,各种配置工具 也跟着更新.更新后导入工程时(使用Android工程编译或者导入新的工程没有对应的gradle版本)一些电脑出现一下问题. Error:Failed to ...
- QT for android 比较完美解决 全屏问题
QT for android 比较完美解决 全屏问题 参考文章: (1)QT for android 比较完美解决 全屏问题 (2)https://www.cnblogs.com/wuyaSama/p ...
- Android中如何解决输入法键盘和activity页面遮挡的问题
Android中如何解决输入法键盘和activity页面遮挡的问题 参考文章: (1)Android中如何解决输入法键盘和activity页面遮挡的问题 (2)https://www.cnblogs. ...
- 【android studio】解决android studio drawable新建项目时只有一个drawable目录的问题
[android studio]解决android studio drawable新建项目时只有一个drawable目录的问题 参考文章: (1)[android studio]解决android s ...
- Android学习笔记----解决“com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536”问题
Android学习笔记----解决"com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 6553 ...
最新文章
- Hanoi塔(分治法的应用)
- maven显示1.5版本过期的解决办法
- 如何在鼠标hover时改变标注的样式
- openresty开发系列27--openresty中封装redis操作
- Pycharm 折叠展开代码快捷键
- Hadoop hdfs 使用流来下载文件数据代码示例
- 拉取远程分支到本地分支_保险公司在本地没有分支机构可以投保吗?异地投保会影响理赔吗?...
- React开发(212):react中高阶组件转发refs
- C++11 标准新特性: 右值引用与转移语义(点评)
- vbscript html 在线,在HTML中使用VBScript可用三种方法
- 详解Android动画之Tween Animation
- 学编程决不可心浮气燥(转)
- 去除移动端alert/confirm的网址(url)
- Java分布式面试题及答案,附架构师必备技术详解
- 元气骑士机器人的成就皮肤_元气骑士:5把特殊“红武”,想要机器人的皮肤,用它就对了!...
- Appium desktop下载安装
- RANSAC算法筛选匹配点
- hspice linux 软件,转贴 hspice 在linux系统下的安装
- oracle arm版本,Oracle版本区别
- 【工商银行科技菁英计划笔试】压缩字符串