如何获得imageview的直线边界

时间:2015-08-09 10:51:57

标签: android events imageview motion rect

我已经缩放了图像以适应图像视图,所以现在我想获得imageview的矩形,这样我就可以只为在imageview内部而不是在外部进行的每次手指拖动计算1次。我所做的事情可以在下面看到,但它不起作用,因为当我在图像视图中上下拖动我的手指时它没有显示任何检测,如果它确实应该为每个拖动增加1但没有任何反应。我究竟做错了什么?

主要活动的onCreate内部:

redShape = (ImageView) findViewById(R.id.image1);
scaleImage(redShape, 300);

Inside Motion Event,Action down:

  rect = new Rect(redShape.getLeft(),redShape.getTop(),redShape.getRight(),redShape.getBottom());

内部动作事件,动作移动:

    if ((posY > redShape.getTop() || posY <redShape.getBottom()) && rect.contains(redShape.getLeft() + posX, redShape.getTop() + posY)){

在上面的if语句中,我有一些代码,对于垂直动作(向上和向下)的每次拖动都会增加1。

编辑:

这就是我所做的,但出于某种原因,比如它之前仍然检测到图像上方区域的拖动。

在主要活动的onCreate中:

     redShape = (ImageView) findViewById(R.id.image1);

     drawable2 = getResources().getDrawable(R.drawable.red_shape);
     int h = drawable2.getIntrinsicHeight(); 
     int w = drawable2.getIntrinsicWidth();  

     Matrix m = redShape.getImageMatrix();
     RectF drawableRect = new RectF(0, 0, w, h);
     RectF viewRect = new RectF(0, 0, redShape.getWidth(), redShape.getHeight());
     m.setRectToRect(drawableRect, viewRect, Matrix.ScaleToFit.FILL);
     redShape.setImageMatrix(m);

编辑2:

 m = redShape.getImageMatrix();

在向下操作中使用以下代码(oldX,oldY触摸点)或移动(posX,posY触摸点):

 float[] touchPoint = new float[] {oldX, oldY};
 m.mapPoints(touchPoint);

0 个答案:

没有答案