我正在使用扩展Android ImageView
的{{3}}。它允许视图中的图像缩放和移动。似乎没有任何公开引用图像位置或比例。有没有办法获得图像相对于我可以尝试的常规ImageView的位置。
我还尝试在CropView上设置一个触摸监听器,它只是打印x& y触摸的位置,但我不知道如何使用这些移动获取图像的更新位置。
mCropView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.d(TAG, "///" + event.getX() + " __ " + event.getY());
return false;
}
});
答案 0 :(得分:0)
你可以试试下面的方法,
final float[] getPointOfTouchedCordinate(ImageView view, MotionEvent e) {
final int index = e.getActionIndex();
final float[] coords = new float[] { e.getX(index), e.getY(index) };
Matrix m = new Matrix();
view.getImageMatrix().invert(m);
m.postTranslate(view.getScrollX(), view.getScrollY());
m.mapPoints(coords);
return coords;
}
你可以得到值
mCropView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
float[] points = getPointOfTouchedCordinate(v, event);
Log.d(TAG, "///" + points[0] + " __ " + points(1));
return false;
}
});
答案 1 :(得分:0)
我建议依靠纯xml并添加到Imagevie:
android:scaleType="centerCrop"
这将导致绘制所需的输出。
答案 2 :(得分:0)
CropView本身就是视口。 Cropview有两个方法getViewportWidth 和getViewportHeight。你需要它们。
缩放,移动,裁剪等图像是Drawable。 Drawable有一个getBounds方法,它将返回一个Rect。您可以从此Rect获得顶部,左侧宽度和高度,但您需要先获得Drawable。
CropView调用此Drawable"位图"。您可以调用CropView的getImageBitmap()方法。
一旦拥有它,请调用getBounds,它会为您提供图像的Rect。
要获得您想要的x和y,您必须使用Rect的顶部,左侧,宽度和高度以及视口的高度和宽度进行一些数学计算。 #39;来自CropView的getViewportHeight和getViewportWidth方法。
简单地:
componentWillUnmount() {
this.unmounted = true;
}
vpwidth=cropview.getViewPortWidth();
vpheight=cropview.getViewPortHeight();
imagetop=cropview.getImageBitmap().getBounds().top;
imageleft=cropview.getImageBitmap().getBounds().left;
imageheight=cropview.getImageBitmap().getBounds().height;
imagewidth=cropview.getImageBitmap().getBounds().width;
数学