我正在尝试使用PhotoView库为照片构建裁剪工具,但我无法理解getDisplayRect()
. 我将照片设置为ImageView
这样:
photo.setImageDrawable(new BitmapDrawable(getResources(), image));
image
位图对象在哪里。然后我设置了一些缩放值:
float minScale = ((float)image.getWidth() > (float)image.getHeight())
? (float)image.getWidth() / (float)image.getHeight()
: (float)image.getHeight() / (float)image.getWidth();
attacher.setMaxScale(minScale * 5f);
attacher.setMidScale(minScale * 2.5f);
attacher.setMinScale(minScale);
attacher.setScale(minScale, (float)image.getWidth() / 2f,(float)image.getHeight() / 2f, false);
attacher.update();
attacher
对象在哪里PhotoViewAttacher
。
当用户完成后,我使用以下内容来确定位图中可见的部分ImageView
:
RectF rect = attacher.getDisplayRect();
float scale = attacher.getScale();
PhotoData ret = new PhotoData(data);
ret.x = (int)(Math.abs(rect.left) / scale);
ret.y = (int)(Math.abs(rect.top) / scale);
ret.width = (int)(rect.width() / scale);
ret.height = (int)(rect.height() / scale);
我得到了意想不到的结果。也许这里有人可以提供一些见解?