下面的画画板的代码:

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. C#基础 大盘点

      类型转换   tryParse    字符和整形转换   转译符:  /' 单引号      /" 双引号      // 反斜杠        /0 空字符       /a 感叹号( ...

  2. COCOS2D-X之圆形进度条的一个简单Demo

    这应该是游戏中很常见的一个效果.显示某个事件的进度等,在加载资源或者联网的时候经常用到.所以有必要学习学习 一.我们直接在COCOS2D-X自带的HelloCpp的工程中添加代码即可.我们在初始化中添 ...

  3. perl encode_json 会产生 UTF-8 (binary) string decode_json 需要一个 UTF-8 (binary) string

    encode_json $json_text = encode_json $perl_scalar Converts the given Perl data structure to a UTF-8 ...

  4. OpenRisc-35-基于orpsoc,eCos的sd card controller的测试实验

    引言 之前,曾经在orpsoc的平台上,测试验证过其sd card controller的linux的驱动,但是并不是很完美,经过努力,终于在eCos下完成了其全部功能的验证,包括驱动层验证,文件系统 ...

  5. Swift - 访问通讯录联系人(使用纯代码实现)

    1,通讯录访问介绍 通讯录(或叫地址簿,电话簿)是一个数据库,里面储存了联系人的相关信息.要实现访问通讯录有如下两种方式: (1)AddressBook.framework框架 : 没有界面,通过代码 ...

  6. 管理集群中的 crs 管理员

     管理集群中的 crs 管理员 oracle Managing CRS Administrators in the Cluster Use the following commands to ma ...

  7. Extjs实现树形结构三连选

    当项目中需要一个部门人员选择或者省市县地域连选时,就需要树形结构的连选. 再此,写了一个简单的树形结构三连选功能,模拟从后台读取数据和处理数据(欢迎大家交流指正). 代码如下: 循环创建三棵树,其中只 ...

  8. 三篇IMO的文章

    http://column.iresearch.cn/b/201411/687499.shtml?from=singlemessage&isappinstalled=1 http://colu ...

  9. 将 Shiro 作为一个许可为基础的应用程序 五:password加密/解密Spring应用

    考虑系统password的安全,眼下大多数系统都不会把password以明文的形式存放到数据库中. 一把会採取下面几种方式对password进行处理 password的存储 "编码" ...

  10. 【Unity3D】【NGUI】UICamera

    原文:http://www.tasharen.com/forum/index.php?topic=6711.0 NGUI讨论群:333417608 概述 UICamera这个名字不是很合适,保留的原因 ...