Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android的pinch-to-zoom库PhotoView和TouchImageView在纵向图像上存在问题_Android_Pinchzoom_Portrait - Fatal编程技术网

android的pinch-to-zoom库PhotoView和TouchImageView在纵向图像上存在问题

android的pinch-to-zoom库PhotoView和TouchImageView在纵向图像上存在问题,android,pinchzoom,portrait,Android,Pinchzoom,Portrait,我想显示图像并允许缩放。我的应用程序是一个空白活动,上面有一个线性布局,上面有ImageView,下面是一个水平线性布局,上面有一些按钮。 我两者都试过了 及 它们都有类似的问题: 右侧的工具栏菜单不响应触摸(在4.4.4和4.4.2中)。 它似乎在5.0.2中响应 在纵向模式下拍摄的照片无法正常显示或缩放:它们仅使用ImageView的一部分 我已经从TouchImageView查看了代码,并认为我可以看到问题2的答案:例程从代码中获得宽度和高度,如下所示: float w = getDraw

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

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

    float w = getDrawable().getIntrinsicWidth();
    
    要在我的应用程序中正确显示肖像模式照片,我需要这样做

    imageRotation = getOrientation(photoFilePath);
    imgView.setRotation(imageRotation);
    
    这会旋转照片以显示,但intrinsicWidth和intrinsicHeight不会更改。因此,缩放软件的尺寸是错误的。奇怪的是,这以前从未被发现过。(也许是我的错。) 如果我是对的,那么我需要更改代码,以便测试imgView.ROTATION属性

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


    谢谢你的帮助。

    我花了一段时间才弄明白。我的问题是如何旋转肖像图像,使其在屏幕上处于正确的方向。我曾经

            imgView.setRotation((float)imageRotation);
    
    这就是问题的根源! 这样做(即不使用imageView功能)


    工作。

    我正在使用。试试看!这太棒了,唯一的缺点是你需要自己实现一些东西,比如在触摸屏上隐藏工具栏,但这并不难。嗨。我从文件中读取图像,获取位图,然后修改位图并显示它。我可以使用这个库来显示位图吗?可以,但是我现在正在讨论位图的一个问题:使用内存中的位图时,图像的缩放和拖动速度要慢得多。我建议您先保存已编辑的图像,然后在此库中显示它。
        Matrix matrix = new Matrix();
        matrix.postRotate(imageRotation);
        bmp = Bitmap.createBitmap(bmp , 0, 0, bmp .getWidth(), bmp.getHeight(), matrix, true);