Android在ImageView中获取位图的位置

时间:2016-06-30 15:21:24

标签: android bitmap imageview

我正在使用扩展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;
    }
});

CropView

3 个答案:

答案 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)

https://github.com/lyft/scissors/blob/master/scissors/src/main/java/com/lyft/android/scissors/CropView.java

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; 数学