下面的画画板的代码:

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); iv = (ImageView)findViewById(R.id.iv); paint = new Paint();
paint.setStrokeWidth(5);//画笔的像素
paint.setColor(Color.BLACK);//画笔的颜色 //此时ImageView iv还为被创建,所以为0,报错
//一般情况下直接指定
baseBitmap = Bitmap.createBitmap(320,
350, Config.RGB_565);
canvas = new Canvas(baseBitmap);
canvas.drawColor(Color.RED); //用户在屏幕上移动的轨迹
iv.setOnTouchListener(new OnTouchListener() {
//定义手指开始位置的坐标
int startX;
int startY; @Override
public boolean onTouch(View v, MotionEvent event) { switch(event.getAction()){
case MotionEvent.ACTION_DOWN://手指第一次接触屏幕
//创建一个可以被修改的Bitmap
System.out.println("手指按下"); System.out.println(iv.getWidth());
System.out.println(iv.getHeight()); startX = (int) event.getX();
startY = (int) event.getY();
break; case MotionEvent.ACTION_MOVE://手指在屏幕上滑动
System.out.println("手指移动");
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://手指离开屏幕
System.out.println("手指抬起");
break;
} return true;//持续响应触摸时间,true
}
});
} public void save(View view){ } }

当在屏幕上画画时,鼠标和划线是错位的。

解决:

1,获取屏幕的的坐标应该用getX(),getY()方法。

2,定义的Bitmap添加在ImageView上不可以缩放或放大,也就是说bitmap指定的宽高要使得bitmap刚好充满ImageView的大小,因为,setImageBitmap方法默认会使bitmap充满整个ImageView。

那么如何获得ImageView的大小呢?

在onTouchListener方法中,ImageView已经存在了,可以在该方法中输出iv.getWidth(),iv.getHeight(),就知道了

android画笔错位问题的解决的更多相关文章

  1. Android权限管理之RxPermission解决Android 6.0 适配问题

    前言: 上篇重点学习了Android 6.0的运行时权限,今天还是围绕着Android 6.0权限适配来总结学习,这里主要介绍一下我们公司解决Android 6.0权限适配的方案:RxJava+RxP ...

  2. ios/iphone手机请求微信用户头像错位BUG及解决方法

    转:http://www.jslover.com/code/527.html ios/iphone手机请求微信用户头像错位BUG及解决方法 发布时间:2014-12-01 16:37:01 评论数:0 ...

  3. 【转】Android出现“Read-only file system”解决办法

    原文网址:http://www.111cn.net/sj/android/44496.htm 下面介绍一篇Android出现“Read-only file system”解决办法 有碰到这类问题的朋友 ...

  4. 【转】Ubuntu 上编译Android出现cannot find -lstdc++解决办法

    [转]Ubuntu 上编译Android出现cannot find -lstdc++解决办法 在Ubuntu 12.04 x86_64机器上编译Android出现下面错误,是因为找不到32bit的li ...

  5. (转载)Android出现“Read-only file system”解决办法

    下面介绍一篇Android出现“Read-only file system”解决办法 有碰到这类问题的朋友可参考参考.   Android-出现Read-only file system的解决方法 输 ...

  6. Android SDK下载失败的解决方法

    Android SDK下载失败的解决方法 图1 在下载过程中,Android SDK Manager Log中出现下面出错信息: Preparing toinstall archives Downlo ...

  7. Android Eclipseproject开发中的常见调试问题(二)android.os.NetworkOnMainThreadException 异常的解决的方法

    android.os.NetworkOnMainThreadException 异常的解决的方法. 刚开是把HttpURLConnectionnection 打开连接这种方法放在UI线程里了,可能不是 ...

  8. android studio 更新 Gradle错误解决方法(Gradle sync failed)

    android studio 更新 Gradle错误解决方法   Android Studio每次更新版本都会更新Gradle这个插件,但由于长城的问题每次更新都是失败,又是停止在Refreshing ...

  9. Ubuntu中Android SDK Manager无法更新解决办法

    Ubuntu中Android SDK Manager无法更新解决办法http://hi.baidu.com/petercao2008/item/d7a64441f04668e81e19bc1a

随机推荐

  1. MDK的优化应用

    MDK的优化应用 http://blog.163.com/zhaojun_xf/blog/static/300505802011291384721/ 使用Keil/MDK这么多年了,一直都没有使用它的 ...

  2. 打算自己做app,你们做过吗?

    最近手头上资金不足,想自己搞一下app赚点广告费,解决一下自己的零花钱问题,各位有没有做自己的app呢?打算用有米广告,各位觉得怎么样? 你们的收益是如何呢?能在这里晒晒吗?

  3. 基于visual Studio2013解决C语言竞赛题之1017次数

         题目 解决代码及点评 /* 功能:有人说在400, 401, 402, ...499这些数中4这个数字共出现112次,请编程序判定这 种说法是否正确.若正确请打印出'YE ...

  4. Get started - UIkit documentation

    Get started - UIkit documentation Get started Get familiar with the basic setup and structure of UIk ...

  5. Netty源代码学习——ChannelPipeline模型分析

    參考Netty API io.netty.channel.ChannelPipeline A list of ChannelHandlers which handles or intercepts i ...

  6. sql: sql developer使用

    在sql developer中登陆某数据库,在procedure里面加入一个proc,种类选ARBOR: CREATE OR REPLACE PROCEDURE PROCEDURE23 IS NAM ...

  7. perl uri_escape(urlencode ) 转换

    [root@wx03 lib]# cat a1.pl #引入模块 use URI::Escape; #urlencode $encoded = uri_escape("[中均]") ...

  8. LintCode 二叉树的层次遍历 II

    中等 二叉树的层次遍历 II 查看执行结果 42% 通过 给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历) 您在真实的面试中是否遇到过这个 ...

  9. 简化ui文件转换写法

    在命令行敲一串长的命令.枯燥麻烦. #coding:utf-8 import sys import os import subprocess if len(sys.argv) == 2: #节省输入, ...

  10. JSP自定义标签——传统标签

    同JSP标签一样,自定义标签主要用于移除JSP页面中的Java代码,可以看到我们在JSP中其实是禁止使用Java脚本的,任何要想通过Java代码实现的功能都必须以标签形式来处理,可以使用JSP标签,J ...