【问题标题】:Is there a way to default a scale for TouchImageView in Android?有没有办法在 Android 中默认 TouchImageView 的比例?
【发布时间】:2012-04-18 16:14:59
【问题描述】:

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

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

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

imagePageNumber.setText(imagePageNumber.getText());

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

有没有人知道一种方法来保持从一个图像加载到另一个图像的比例?

【问题讨论】:

    标签: android imageview


    【解决方案1】:

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

    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 更新问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-15
      • 2016-07-16
      • 2015-01-10
      • 1970-01-01
      • 2023-02-14
      • 1970-01-01
      相关资源
      最近更新 更多