Glide 没有在我的 android 应用程序中显示图像

Glide isn't displaying images in my android app

在我的应用程序中,我的 captureBonus activity(也是 ImageView 所在的位置)中有以下代码:

// Process the Sample Image
bonusSampleImage = findViewById(R.id.bonusSampleImage);
Glide.with(this)
    .load("http://i.imgur.com/DvpvklR.png")
    //.load("https://www.tourofhonor.com/appimages/2019fl4.jpg")
    .into(bonusSampleImage);

但是当我 运行 我的应用程序时,我根本看不到任何图像。在我添加上面的代码之前,会出现带有占位符的图像视图。另外,我尝试了代码中的两个链接,都不起作用(我认为它与 https 相关)。

我已经拥有互联网和外部存储权限。

我发现 Glide 在 logcat 中记录了一些 activity,但它只能在详细模式下查看:

2019-05-01 16:51:38.329 3182-3182/net.tommyc.android.tourofhonor W/Glide: Failed to find GeneratedAppGlideModule. You should include an annotationProcessor compile dependency on com.github.bumptech.glide:compiler in your application and a @GlideModule annotated AppGlideModule implementation or LibraryGlideModules will be silently ignored
2019-05-01 16:51:38.568 3182-3182/net.tommyc.android.tourofhonor I/ViewTarget: Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
2019-05-01 16:51:38.690 3182-3182/net.tommyc.android.tourofhonor W/Glide: Load failed for http://i.imgur.com/DvpvklR.png with size [1032x2038]
    class com.bumptech.glide.load.engine.GlideException: Failed to load resource
    There was 1 cause:
    java.net.UnknownHostException(Unable to resolve host "i.imgur.com": No address associated with hostname)
     call GlideException#logRootCauses(String) for more detail
      Cause (1 of 1): class com.bumptech.glide.load.engine.GlideException: Fetching data failed, class java.io.InputStream, REMOTE
    There was 1 cause:
    java.net.UnknownHostException(Unable to resolve host "i.imgur.com": No address associated with hostname)
     call GlideException#logRootCauses(String) for more detail
        Cause (1 of 1): class com.bumptech.glide.load.engine.GlideException: Fetch failed
    There was 1 cause:
    java.net.UnknownHostException(Unable to resolve host "i.imgur.com": No address associated with hostname)
     call GlideException#logRootCauses(String) for more detail
          Cause (1 of 1): class java.net.UnknownHostException: Unable to resolve host "i.imgur.com": No address associated with hostname
2019-05-01 16:51:38.690 3182-3182/net.tommyc.android.tourofhonor I/Glide: Root cause (1 of 1)

这是activity对应的布局XML:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:orientation="vertical"
    android:fillViewport="true">


    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        tools:context=".captureBonus">

        <RelativeLayout
            android:id="@+id/basicBonusInfo"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp">

            <TextView
                android:id="@+id/bonusName"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/valueBonusName"
                android:layout_alignParentTop="true"
                android:layout_alignParentStart="true"
                android:textSize="18sp"/>

            <TextView
                android:id="@+id/bonusCategory"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/valueCategory"
                android:layout_below="@id/bonusName"
                android:layout_alignParentStart="true"/>

            <TextView
                android:id="@+id/bonusCode"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/valueBonusCode"
                android:layout_below="@id/bonusName"
                android:layout_alignParentEnd="true"/>

        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/bonusLocationInfo"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:layout_below="@id/basicBonusInfo">

            <TextView
                android:id="@+id/bonusAddress"
                android:text="1600 Pennsylvania Ave NW"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"/>

            <TextView
                android:id="@+id/bonusCity"
                android:text="Washington"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/bonusAddress"/>

            <TextView
                android:id="@+id/bonusState"
                android:text="DC"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="8dp"
                android:layout_below="@id/bonusAddress"
                android:layout_toEndOf="@id/bonusCity"/>

            <TextView
                android:id="@+id/bonusGPSLabel"
                android:text="GPS:"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="8dp"
                android:layout_below="@id/bonusCity"/>

            <TextView
                android:id="@+id/bonusGPSCoordinates"
                android:text="XX.YYYYYY, -XX.YYYYYY"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="8dp"
                android:layout_below="@id/bonusCity"
                android:layout_alignParentEnd="true" />

        </RelativeLayout>

        <ImageView
            android:id="@+id/bonusMainImage"
            android:contentDescription="@string/mainImageDescription"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/bonusLocationInfo"
            android:src="@drawable/no_image_taken"
            android:scaleType="centerInside"
            android:adjustViewBounds="true"
            android:layout_margin="8dp"
            android:clickable="true"
            android:focusable="true"/>

        <ImageView
            android:id="@+id/bonusSecondaryImage"
            android:contentDescription="@string/secondaryImageDescription"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/bonusMainImage"
            android:src="@drawable/optional_2nd_image"
            android:scaleType="centerInside"
            android:adjustViewBounds="true"
            android:layout_margin="8dp"/>

        <TextView
            android:id="@+id/additionalBonusDetails"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/lblSampleBonusImage"
            android:layout_below="@id/bonusSecondaryImage"
            android:layout_marginStart="8dp"/>

        <ImageView
            android:id="@+id/bonusSampleImage"
            android:contentDescription="@string/sampleImageDescription"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/additionalBonusDetails"
            android:src="@drawable/sample_image_missing"
            android:scaleType="centerInside"
            android:adjustViewBounds="true"
            android:layout_margin="8dp"/>

        <TextView
            android:id="@+id/bonusFlavorLabel"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Bonus Notes"
            android:layout_marginStart="8dp"
            android:layout_below="@id/bonusSampleImage"/>

        <TextView
            android:id="@+id/bonusFlavorContent"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="XXXXXXXXXXXXXXX"
            android:layout_margin="8dp"
            android:layout_below="@id/bonusFlavorLabel"/>

        <Button
            android:id="@+id/btnSubmitBonus"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/btnLblSubmitBonus"
            android:layout_below="@id/bonusFlavorContent"
            android:layout_centerHorizontal="true"/>

    </RelativeLayout>
</ScrollView>

您的 URL 中缺少一个 s。对于图像 URL,请使用 https 而不是 http

Glide.with(this)
    .load("https://i.imgur.com/DvpvklR.png")  // Add https instead of http
    .placeholder(R.drawable.sample_image_missing)  // Add a placeholder here
    .into(bonusSampleImage);

以及您 build.gradle 文件中的依赖项中的以下内容。我觉得这个少了。

annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'

Glide's 文档中所述,如果您还没有存储库,则也需要这些存储库。

是的,请同时检查您的互联网连接。

dependencies {
  implementation 'com.github.bumptech.glide:glide:4.9.0'
  annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
}

repositories {
        google()
        jcenter()
        maven { url "https://jitpack.io" }
        maven { url 'https://maven.google.com' }
    }

创建 class MyGlideApp 并重建您的项目。

@GlideModule
public class MyGlideApp extends AppGlideModule {

    @Override
    public boolean isManifestParsingEnabled() {
        return false;
    }
}

将此粘贴到您的 activity class

public void loadGlideImage(Context context, ImageView imageView, String url) {
            GlideApp.with(context.getApplicationContext())
                    .load(url)
                    .signature(new ObjectKey(url))
                    .dontAnimate()
                    .into(imageView);
    }

那你可以

String img_url = "https://www.tourofhonor.com/appimages/2019fl4.jpg";
loadGlideImage(this, bonusSampleImage, img_url);