android画笔错位问题的解决
下面的画画板的代码:
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画笔错位问题的解决的更多相关文章
- Android权限管理之RxPermission解决Android 6.0 适配问题
		前言: 上篇重点学习了Android 6.0的运行时权限,今天还是围绕着Android 6.0权限适配来总结学习,这里主要介绍一下我们公司解决Android 6.0权限适配的方案:RxJava+RxP ... 
- ios/iphone手机请求微信用户头像错位BUG及解决方法
		转:http://www.jslover.com/code/527.html ios/iphone手机请求微信用户头像错位BUG及解决方法 发布时间:2014-12-01 16:37:01 评论数:0 ... 
- 【转】Android出现“Read-only file system”解决办法
		原文网址:http://www.111cn.net/sj/android/44496.htm 下面介绍一篇Android出现“Read-only file system”解决办法 有碰到这类问题的朋友 ... 
- 【转】Ubuntu 上编译Android出现cannot find -lstdc++解决办法
		[转]Ubuntu 上编译Android出现cannot find -lstdc++解决办法 在Ubuntu 12.04 x86_64机器上编译Android出现下面错误,是因为找不到32bit的li ... 
- (转载)Android出现“Read-only file system”解决办法
		下面介绍一篇Android出现“Read-only file system”解决办法 有碰到这类问题的朋友可参考参考. Android-出现Read-only file system的解决方法 输 ... 
- Android SDK下载失败的解决方法
		Android SDK下载失败的解决方法 图1 在下载过程中,Android SDK Manager Log中出现下面出错信息: Preparing toinstall archives Downlo ... 
- Android Eclipseproject开发中的常见调试问题(二)android.os.NetworkOnMainThreadException 异常的解决的方法
		android.os.NetworkOnMainThreadException 异常的解决的方法. 刚开是把HttpURLConnectionnection 打开连接这种方法放在UI线程里了,可能不是 ... 
- android studio 更新 Gradle错误解决方法(Gradle sync failed)
		android studio 更新 Gradle错误解决方法 Android Studio每次更新版本都会更新Gradle这个插件,但由于长城的问题每次更新都是失败,又是停止在Refreshing ... 
- Ubuntu中Android SDK Manager无法更新解决办法
		Ubuntu中Android SDK Manager无法更新解决办法http://hi.baidu.com/petercao2008/item/d7a64441f04668e81e19bc1a 
随机推荐
- C#基础  大盘点
			类型转换 tryParse 字符和整形转换 转译符: /' 单引号 /" 双引号 // 反斜杠 /0 空字符 /a 感叹号( ... 
- COCOS2D-X之圆形进度条的一个简单Demo
			这应该是游戏中很常见的一个效果.显示某个事件的进度等,在加载资源或者联网的时候经常用到.所以有必要学习学习 一.我们直接在COCOS2D-X自带的HelloCpp的工程中添加代码即可.我们在初始化中添 ... 
- 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 ... 
- OpenRisc-35-基于orpsoc,eCos的sd card controller的测试实验
			引言 之前,曾经在orpsoc的平台上,测试验证过其sd card controller的linux的驱动,但是并不是很完美,经过努力,终于在eCos下完成了其全部功能的验证,包括驱动层验证,文件系统 ... 
- Swift - 访问通讯录联系人(使用纯代码实现)
			1,通讯录访问介绍 通讯录(或叫地址簿,电话簿)是一个数据库,里面储存了联系人的相关信息.要实现访问通讯录有如下两种方式: (1)AddressBook.framework框架 : 没有界面,通过代码 ... 
- 管理集群中的 crs 管理员
			 管理集群中的 crs 管理员 oracle Managing CRS Administrators in the Cluster Use the following commands to ma ... 
- Extjs实现树形结构三连选
			当项目中需要一个部门人员选择或者省市县地域连选时,就需要树形结构的连选. 再此,写了一个简单的树形结构三连选功能,模拟从后台读取数据和处理数据(欢迎大家交流指正). 代码如下: 循环创建三棵树,其中只 ... 
- 三篇IMO的文章
			http://column.iresearch.cn/b/201411/687499.shtml?from=singlemessage&isappinstalled=1 http://colu ... 
- 将 Shiro 作为一个许可为基础的应用程序 五:password加密/解密Spring应用
			考虑系统password的安全,眼下大多数系统都不会把password以明文的形式存放到数据库中. 一把会採取下面几种方式对password进行处理 password的存储 "编码" ... 
- 【Unity3D】【NGUI】UICamera
			原文:http://www.tasharen.com/forum/index.php?topic=6711.0 NGUI讨论群:333417608 概述 UICamera这个名字不是很合适,保留的原因 ... 
