Наконец , Я использовал этот открытый исходный код https://github.com/sephiroth74/ImageViewZoom
Я изменил код, но в этом с открытым исходным кодом все еще есть много ошибок Я исправил несколько из них.
Следующая функция была добавлена в класс ImageViewTouch.GestureListener, который используется для передачи сенсорной точки (на экране) в точку реального изображения (независимо от того, как изображение приближается/уменьшаться).
private PointF calculatePositionInSourceImage(PointF touchPointF) {
//point relative to imageRect
PointF touchPointRelativeToImageRect = new PointF();
RectF imageRect = getBitmapRect();
touchPointRelativeToImageRect.set(touchPointF.x - imageRect.left,
touchPointF.y - imageRect.top);
//real image resolution
int imageWidth = getDrawable().getIntrinsicWidth();
int imageHeight = getDrawable().getIntrinsicHeight();
//touch point in image
PointF touchPointRelativeToImage = new PointF();
touchPointRelativeToImage.set(touchPointRelativeToImageRect.x/imageRect.width() * imageWidth,
touchPointRelativeToImageRect.y/imageRect.height() * imageHeight);
if(touchPointRelativeToImage.x < 0 || touchPointRelativeToImage.y < 0)
touchPointRelativeToImage.set(0,0);
return touchPointRelativeToImage;
}
Кажется хорошим, могу ли я получить положение касания изображения в ImageView/PhotoView? – xhsoldier
PhotoView позаботится о масштабировании, если вы дважды коснетесь изображения, будет увеличивать эту позицию, если вам нужно знать позицию, я думаю, вы можете получить эти значения из библиотеки, но вам нужно будет изменить пару вещей –