我已经缩放了图像以适应图像视图,所以现在我想获得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);