从缓存Glide加载图像

时间:2017-02-28 13:11:43

标签: android android-recyclerview android-glide

我使用Glide和recyclerview。当我在我的设备上运行我的应用程序第一次(使用android工作室)图像正确加载但按下后再完成应用程序然后再打开应用程序图像不加载我必须点击卡片(点击左侧卡片打开新活动)加载显示图像(似乎是图像缓存但未加载) 我启用了所有类型的调试日志记录,但没有得到任何异常或错误

Glide.with(mContext)
     .load(Uri.parse(image.getImage_url()))
     .listener(new RequestListener<Uri, GlideDrawable>() {
           @Override
           public boolean onException(Exception e, Uri model, Target<GlideDrawable> target, boolean isFirstResource) {
                   return false;
            }
            @Override
            public boolean onResourceReady(GlideDrawable resource, Uri model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource){
                if (dialog.isShowing())
                    dialog.dismiss();
                 return false;
             }
      })
      .into(holder.image);


在recyclerview适配器中的此代码

滑翔版3.7.0

这是适配器的元素布局

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/card_view"
    card_view:cardCornerRadius="4dp"
    android:clickable="true"
    android:focusable="true"
    android:layout_weight="1"
    android:layout_margin="2dp"
    android:background="?android:attr/selectableItemBackground"
    android:layout_height="wrap_content"
    android:layout_width="match_parent">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/activity_project_pro_image"
            android:layout_width="match_parent"
            android:background="@drawable/card_view_image_holder"
            android:scaleType="fitXY"
            android:layout_height="200dp" />

        <customfonts.MyTextViewLight
            android:id="@+id/activity_project_pro_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/design_name"
            android:textSize="18dp"
            android:paddingRight="10dp"
            android:paddingLeft="10dp"
            android:gravity="center_horizontal"
            android:textColor="#aa000000"/>
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="@color/under_line"
            />
        <LinearLayout
            android:layout_marginTop="4dp"
            android:layout_marginBottom="5dp"
            android:layout_width="match_parent"
            android:orientation="horizontal"
            android:layout_height="wrap_content">

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_weight="1"
                android:gravity="center"
                android:layout_height="match_parent">
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content">

                    <ImageButton
                        android:layout_gravity="left"
                        android:id="@+id/image_activity_share_btn"
                        android:layout_width="32dp"
                        android:background="?android:attr/selectableItemBackground"
                        android:src="@drawable/card_share"
                        android:scaleType="fitXY"
                        android:layout_marginRight="100dp"
                        android:contextClickable="true"
                        android:layout_height="32dp" />

                </LinearLayout>
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content">
                    <ImageButton
                        android:layout_gravity="left"
                        android:id="@+id/image_activity_save_btn"
                        android:layout_width="32dp"
                        android:background="?android:attr/selectableItemBackground"
                        android:src="@drawable/card_downlaod"
                        android:scaleType="fitXY"
                        android:layout_marginRight="5dp"
                        android:contextClickable="true"
                        android:layout_height="32dp" />

                </LinearLayout>
            </LinearLayout>

        </LinearLayout>
    </LinearLayout>




</android.support.v7.widget.CardView>

很抱歉很长的帖子

1 个答案:

答案 0 :(得分:1)

几天前我也遇到了同样的问题。我在我的滑行调用中添加了diskCacheStrategy(DiskCacheStrategy.ALL)和dontAnimate()方法,它开始正常工作。

Glide.with(mContext)
     .load(Uri.parse(image.getImage_url()))
     .diskCacheStrategy(DiskCacheStrategy.ALL)
     .dontAnimate()
     .listener(new RequestListener<Uri, GlideDrawable>() {
           @Override
           public boolean onException(Exception e, Uri model, Target<GlideDrawable> target, boolean isFirstResource) {
                   return false;
            }
            @Override
            public boolean onResourceReady(GlideDrawable resource, Uri model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource){
                if (dialog.isShowing())
                    dialog.dismiss();
                 return false;
             }
      })
      .into(holder.image);

让我知道它是否适合你。