下面的画画板的代码:

public class MainActivity extends Activity {private ImageView iv;private Bitmap baseBitmap;private Canvas canvas;private Paint paint;@Overrideprotected 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;@Overridepublic boolean onTouch(View v, MotionEvent event) {switch(event.getAction()){case MotionEvent.ACTION_DOWN://手指第一次接触屏幕//创建一个可以被修改的BitmapSystem.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(),就知道了

更多相关文章

  1. 解决Content的startActivity方法报错
  2. Android(安卓)aspectJ Aop
  3. Android通过反射实现强制停止应用程序的方法
  4. android 1.6 launcher研究之launcher的左右滑动
  5. MediaPlayer+Stagefright架构(音频)图解
  6. 【android】解决Viewpager设置高度为wrap_content无效的方法
  7. Android(安卓)JNI入门第三篇——jni头文件分析
  8. Android(安卓)CollapsingToolbarLayout:将ActionBar载入Toolbar(2)
  9. Android(安卓)viewpager 拿到当前显示的 fragment 的实例

随机推荐

  1. 【android】轻松集成支付包支付
  2. 利用 Android(安卓)Studio 和 Gradle 打
  3. Please ensure that adb is correctly lo
  4. Android(安卓)TextView中文字设置超链接
  5. Android的5中数据存储方式
  6. Android全局捕获崩溃异常记录
  7. Android支付宝支付封装代码
  8. 用cordova打包web项目
  9. Android(安卓)带清空按钮的EditText
  10. Android(安卓)Studio Gradle中配置releas