在纵向图像上捏缩放图库PhotoView和TouchImageView的问题

时间:2016-02-29 18:48:30

标签: android pinchzoom portrait

我想显示图像并允许捏缩放。我的应用程序是一个空白活动,线性布局,顶部和下面是ImageView,带有一些按钮的水平线性布局。 我试过了两个 PhotoViewTouchImageView 他们都有类似的问题:

  1. 右侧的工具栏菜单不响应触摸(在4.4.4和4.4.2中)。 它似乎在5.0.2中作出回应。
  2. 以纵向模式拍摄的照片无法正确显示或缩放:它们仅使用ImageView的一部分。
  3. 我查看了TouchImageView中的代码,并认为我可以看到问题2的答案:例程从代码中获取宽度和高度:

    float w = getDrawable().getIntrinsicWidth();
    

    要在我的应用中正确显示肖像模式照片,我需要这样做

    imageRotation = getOrientation(photoFilePath);
    imgView.setRotation(imageRotation);
    

    这会旋转照片以供显示,但intrinsicWidth和intrinsicHeight不会更改。因此缩放软件的尺寸错误。奇怪,以前没有抓到过。 (也许这是我的错。) 如果我是对的,那么我需要更改代码,以便测试imgView.ROTATION属性。

    编辑:我可以检测旋转,然后在纵向模式图像中切换高度和宽度。这有点帮助,但还不够。图像视图中仍有未使用的空白区域。需要做更多的工作,这超出了我的技能。

    感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我花了一段时间才弄明白这一点。我的问题是如何旋转肖像图像以使它们在屏幕上进入正确的方向。我用了

        imgView.setRotation((float)imageRotation);

那导致了这个问题! 这样做(即不使用imageView功能)

    Matrix matrix = new Matrix();
    matrix.postRotate(imageRotation);
    bmp = Bitmap.createBitmap(bmp , 0, 0, bmp .getWidth(), bmp.getHeight(), matrix, true);

的工作。