android - 如何在 ImageView 中缩放特定 XY 坐标(点)

标签 android android-imageview android-canvas android-bitmap android-photoview

我用过这个PhotoView自定义 ImageView 的库。我想在特定点缩放图像。这是我找到的方法是 setScale(float scale, float focusX, float focusY, boolean animate)

我想知道我可以传递什么 focalXfocalY 的值,我有当前正在传递的 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/

相关文章:

android - Android开发最方便的设备是什么?

android - 什么是 com.google.android.gms.persistent,为什么它总是使用 CPU?

android - 不需要的 FrameLayout 拉伸(stretch)以包裹所有 child 的高度(而不是只考虑一个 child 的高度)

android - 使用按钮单击控制 ImageView

Android 在带有圆角和 ImageView 的 GridView 中创建项目

java - 从 xml 延迟加载 View

android - 媒体文件中的 DTD 问题

android - 具有自己的网络服务器的一致安全的 Google Play 应用内购买场景

android - canvas.clip Path()即使在禁用硬件加速后也无法正常工作

android - 如何在 Android 中旋转 Canvas 上绘制的矩形?