【问题标题】:Android image full screen viewerAndroid图像全屏查看器
【发布时间】:2018-05-09 00:16:35
【问题描述】:

我是 android 的新手。当点击它时,将 imageview 弹出到全屏(启用捏缩放)的最简单方法是什么,就像 whatsapp 图像一样?我正在通过 Glide 在回收站视图中加载我的图像。感谢您的宝贵时间和回复。

【问题讨论】:

标签: android


【解决方案1】:

我使用了 PhotoView (https://github.com/chrisbanes/PhotoView) 和 Glide (https://github.com/bumptech/glide)。

我首先创建了全屏活动并将 PhotoView 放入布局中。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#000000"
    tools:context=".PhotoviewerActivity">

    <com.github.chrisbanes.photoview.PhotoView
        android:id="@+id/fullscreen_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />

</FrameLayout>

然后,我将要显示的图像 URL 传递给全屏活动并使用 Glide 加载图像,如下所示。

val imageUrl = intent.getStringExtra(IMAGE_URL)
Glide.with(applicationContext).load(imageUrl).into(fullscreen_content)

您可以从全屏布局中删除所有不需要的代码,也可以从全屏活动代码中禁用。 这些代码是用 Kotlin 编写的。

【讨论】:

    【解决方案2】:

    有一个名为StfalconImageViewer 的库。它支持开箱即用的图像打开和关闭、捏合缩放和滑动关闭手势的过渡动画。使用 Glide 会这样完成:

    new StfalconImageViewer.Builder<>(context, images, new ImageLoader<String>() {
                @Override
                public void loadImage(ImageView imageView, String imageUrl) {
                    Glide.with(context).load(imageUrl).into(imageView)
                }
            }).show();
    

    希望这会有所帮助!

    【讨论】:

      【解决方案3】:

      您可以使用ImageView 视图,比例类型为FIT_XY(查看更多关于ImageView here 的比例类型)

      要缩放图像,您可以使用第三个库,例如 this one 或自己编写一个类(参见 here

      【讨论】:

      • 图像视图是真正的“全屏”还是在容器中?我想要具有缩放功能的真正全屏视图。谢谢
      • 这取决于你。 RecyclerView 的每个项目可以是 ImageViewViewGroup(LinearLayout、RelativeLayout 等),其中包含 ImageView
      【解决方案4】:

      这是我使用 glide 的单个图像的工作代码最后我发现了类似于 WhatsApp 的东西。我在互联网上挖掘了三天,现在我找到了解决方案。

      new StfalconImageViewer.Builder<String>(context, new ArrayList<>(Arrays.asList(messageModel.get(position).getUrl().trim())), new ImageLoader<String>() {
          @Override
          public void loadImage(ImageView imageView, String image) {
              Glide.with(context)
                      .load(image)
                      .into(imageView);
          }
      }).show();
      

      【讨论】:

        猜你喜欢
        • 2014-11-07
        • 1970-01-01
        • 1970-01-01
        • 2019-02-03
        • 2019-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多