我用过这个PhotoView自定义 ImageView 的库。我想在特定点缩放图像。这是我找到的方法是 setScale(float scale, float focusX, float focusY, boolean animate)
我想知道我可以传递什么 focalX
和 focalY
的值,我有当前正在传递的 X 和 Y 坐标,它会缩放到非常不同的位置。
这是一个 fragment ,
intResultX = intTotalX / intArraySize;
intResultY = intTotalY / intArraySize;
mMap.setScale(5, intResultX, intResultY, true);
最佳答案
要在 Imageview 中缩放特定 XY 坐标,您可以传递 focusX 和 focusY 的值以及比例(必须在 PhotoView 的最大比例和最小比例之间)和 bool 值来设置动画。
获取最大-最小比例的代码:
mPhotoView.getMinimumScale();
mPhotoView.getMaximumScale();
focalX和focalY可以是屏幕上的任意点,这里我举了两个例子,一个是屏幕中心,另一个是左上角。以下是这两种情况的代码。
代码:
Random r = new Random();
float minScale = mPhotoView.getMinimumScale();
float maxScale = mPhotoView.getMaximumScale();
float randomScale = minScale + (r.nextFloat() * (maxScale - minScale));
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int height = displayMetrics.heightPixels;
int width = displayMetrics.widthPixels;
int centerX=width/2;
int centerY =height/2;
/*pass a value of focalX and focalY to scale image to center*/
//mPhotoView.setScale(randomScale, centerX, centerY, true);
/*pass a value of focalX and focalY to scale image to top left corner*/
mPhotoView.setScale(randomScale, 0, 0, true);
关于android - 如何在 ImageView 中缩放特定 XY 坐标(点),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44528361/