我有1个ImageView,layout_width&layout_height是match_parent,其中两个是屏幕的宽度和高度。我需要显示照片以填满整个宽度,并且当图像高于ImageView高度时,它可以上下滚动。我正在使用PhotoView库进行缩放,滚动,点击...。现在我正在使用centerCrop比例类型,但这不是我需要的解决方案。它显示了中心图像的一部分,我需要向上滚动才能从头开始查看。

我尝试了很多自定义视图扩展ImageView以显示“顶部裁剪”样式,但是当我触摸图像时,它更改为默认的PhotoView缩放类型。仅在不使用PhotoViewAttacher时有效

我如何使用PhotoView库进行裁剪和滚动+缩放+触摸...图像?

最佳答案

您可以在Chris Banes的PhotoView的PhotoViewAttacher中的updateBaseMatrix()下实现更改CENTER_CROP比例的TopCrop比例。

这是代码:

else if (mScaleType == ScaleType.CENTER_CROP) {
   float scale = Math.max(widthScale, heightScale);
    mBaseMatrix.postScale(scale, scale);
    //Changed dy = 0 for top crop
    mBaseMatrix.postTranslate((viewWidth - drawableWidth * scale) / 2F, 0);


资料来源:http://www.widecodes.com/fxSzNWPeVX/android-image-view-top-crop.html



由于我希望人们在ImageView中请求更多的scaleType:https://code.google.com/p/android/issues/detail?id=58468我向Chris Banes的PhotoView中添加了自定义比例类型。

我向他发送公关。由于我不知道他是否会接受PR(或何时接受),您可以在我的github中获取该项目:https://github.com/jonathanrz/PhotoView/并将aar手动添加到您的项目中。

您可以在库内的示例项目中的CropTypeActivity中查看用法示例。

07-25 22:14