4

像这里的许多其他用户一样,我正在使用https://github.com/MikeOrtiz/TouchImageView提供的 TouchImageView 类

在我的应用程序中,我正在加载来自服务的图像文件,我将其设置到我的 TouchImageView 对象中。这很好用,因为我可以放大和平移我的图像。但是,每当我单击其中一个按钮移动到下一个或上一个图像时,图像会在显示下一个图像之前缩小到标准缩放。这是第一个问题。

每次更新另一个组件时,TouchImageView 对象都会返回到其初始缩放级别。只需在 EditText 上调用下一行代码即可重置缩放。

imagePageNumber.setText(imagePageNumber.getText());

为了解决这个问题,我尝试在当前缩放级别信息丢失之前保存它,然后在图像加载后再次应用它。我在 TouchImageView 中编写了一个名为 setZoom(float mScaleFactor) 的方法,它基本上模仿了现有 onScale 方法的缩放行为。如果我在使用 imageView.setImageBitmap(bm) 更新图像后直接调用它,则图像不会缩放。但是,如果我在按钮上有一个单击侦听器,并在图像加载后尝试缩放,它将正确地将缩放更新为我之前保存的值。我假设图像加载方式可能存在线程问题,并且在调用 setImageBitmap 后无法立即缩放。

有谁知道将比例从一个图像加载到另一个图像的方法?

4

1 回答 1

0

我在其他情况下遇到过,但解决方案可能相同。参考你的

imagePageNumber.setText(imagePageNumber.getText());

 TouchImageView object returns to its initial zoom level any time another component is updated

您必须记住其中的 onMeasure() 方法和 translateMatrixAfterRotate() 会导致 TouchImageView 更新。translateMatrixAfterRotate() 支持旋转,如果您对应用程序的旋转能力不感兴趣,您只需删除 translateMatrixAfterRotate 函数和所有以“temp..”开头的变量,这些变量在旋转之前存储移动数据。它必须解决您遭受的强制 TouchImageView 更新问题。

于 2021-01-05T13:51:42.633 回答