当前位置: 首页 > 知识库问答 >
问题:

如何让滑翔显示器像毕加索一样?

万俟承望
2023-03-14

我一直在使用毕加索的库将图像加载到我的应用程序中的gridview中,它的工作和外观完全符合我的要求。但是用户告诉我图像的加载速度非常慢。我知道这是因为糟糕的网络速度和毕加索正在加载我的完整图像,这是非常大的,然后调整它们的大小,以适应我的图像视图。所以我尝试使用glide,它以几乎两倍的速度装载图像,但在一些图像上,它不像毕加索那样保持结构。例如,毕加索加载图像看起来像

当滑翔加载时,它们有不同的状态,下面是它最初加载的状态

滚动之后,它看起来像

<ImageView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:scaleType="fitXY"
    android:id="@+id/imageView"/>
                 Picasso.with(getActivity())
                .load(mThumbIds[position])
                .placeholder(R.drawable.placeholder)
                .fit()
                .into(imageView);

        return imageView;
                 Glide.with(getActivity())
                .load(mThumbIds[position])
                .asBitmap()
                .placeholder(R.drawable.placeholder)
                .diskCacheStrategy(DiskCacheStrategy.ALL)
                .fitCenter()
                .error(R.drawable.ic_photos)
                .into(imageView);

         return imageView;

如果重要的话,这是我的网格视图

    <GridView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_margin="5dp"
    android:id="@+id/gridview"
    android:numColumns="2"
    android:gravity="center"
    android:drawSelectorOnTop="true"
    android:listSelector="@drawable/ripple"
    android:stretchMode="columnWidth"
    >

共有1个答案

陆俭
2023-03-14

默认情况下,Glide会尝试保持图像的纵横比。当您使用FitCenter()时,这意味着您希望整个图像可见并居中在可用区域内。切换到centercrop()是确保图像填充可用高度和宽度的第一步。

但是,GridView也遇到了一个长期存在的问题:它假定所有列的高度相同。但是,您使用wrap_content作为ImageView的高度,导致每个元素根据传入的高度调整不同的大小(记住,为了Glide的透视图,您说过您的ImageView可以根据需要设置多少高就设置多少高!)。

如果您有一个主要的纵横比(比如16:9),您可以使用一个固定的纵横比视图,比如这个AspectRatioImageView,它将根据列的宽度(由GridView设置)始终使用相同的高度。另一个更复杂的选项是切换到RecyclerView并使用StaggeredGridLayoutManager,这将允许您保持每个图像的纵横比并错开行,确保每个图像填充空间并保持其纵横比。

 类似资料:
  • 我正在使用毕加索图书馆。我知道,如果我将图片从URL加载到图像视图中,有一种回调方法。但我不想加载到imageview中。相反,我想将其另存为位图。所以我用了下面的代码 我怎样才能得到一个回调方法,知道我的图像是成功下载使用毕加索? 不要说位图对象的空检查。这会导致错误。

  • 我试图显示图像从Firebase数据库中的回收视图在Android Studio,但图像不显示。我不确定我哪里出错了,也不知道问题出在哪里。 主Activity.xml 标志和物品。xml 标志tems.java 主要活动。JAVA LogoItemsAdapter。JAVA

  • 正如你可以看到的使用链接,毕加索只有3个选项加载一个图像。我的问题是,如果您有一个从API的JSON响应解析的base64字符串,那么如何加载图像?

  • 我在应用程序中使用了毕加索,但我面临一个问题。我在Listview中显示用户配置文件图像,如果图像不存在,我想在ImageView中显示用户名的首字母缩写。我可以显示个人资料图像,如果存在,但为了显示首字母,我如何知道用户没有图像。?

  • 从internet加载文本数据并链接到图像。我无法理解如何在listview中加载图像。阅读后,它需要使用毕加索或通用图像加载器,但不明白如何使用。请更正我的代码 }

  • 当我尝试将Image URL解析到ImageView中时,回收器视图不显示,活动为空。我正在使用Picasso将图像加载到适配器类中的onBinfViewHolder方法中。这是相关代码 代表: } RepRvAdapter: } 解析JSON数据的方法: 现在,我有一行解析图像URL的代码被注释掉了。行取消注释后,活动将不再显示。如何获取要在ImageView中解析和显示的图像url?我认为这可