有没有办法在Android中默认TouchImageView的比例?

时间:2012-04-04 22:00:12

标签: android imageview

与此处的许多其他用户一样,我使用https://github.com/MikeOrtiz/TouchImageView

处提供的TouchImageView类

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

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

imagePageNumber.setText(imagePageNumber.getText());

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

有没有人知道如何将比例从一个图像加载保持到另一个?

1 个答案:

答案 0 :(得分: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 更新问题。