使用Glide for Android,如何从资产和资源加载图像?

ir2*_*pid 47 android lazy-loading android-glide

我想保持所有转换,激励和动画相同,并且考虑是否可以在Glide中传递资源ID或资产名称以在本地加载它?

Sam*_*udd 129

对于资源ID,您可以使用:

Glide.with(fragment)
    .load(R.drawable.resource_id)
    .into(imageView);
Run Code Online (Sandbox Code Playgroud)

对于资产,您可以构建资产uri:

Glide.with(fragment)
    .load(Uri.parse("file:///android_asset/<assetName>"))
    .into(imageView);
Run Code Online (Sandbox Code Playgroud)

  • 对于"assetName",请不要忘记添加扩展名,例如:"image.jpg" (9认同)
  • 对其他人来说可能是显而易见的,但我花了很多时间来解决这个问题,因为我认为`android_asset/assetName`应该被我的资产路径所取代.最后我发现只有`assetName`和`file:/// android_asset /`应该总是存在 (6认同)
  • 不应该是`R.drawable.resource_id`吗? (3认同)
  • 请注意现代 Android 操作系统上的“Uri.parse()”,而是使用“FileProvider.getUriForFile()” (2认同)

Sen*_*l S 6

Glide
.with(context)
.load(uri)
.asBitmap()
.placeholder(R.drawable.yourimage)
.error(R.drawable.yourimage)
.into(yourview);
Run Code Online (Sandbox Code Playgroud)

除了上面的答案,如果图像 URL 返回 null,您可以像上面一样将默认图像加载到视图中。


Far*_*zin 6

使用时有效.asBitmap()

String pathUri="file:///android_asset/img/flower.jpg";
Glide.with(context).asBitmap().load(Uri.parse(pathUri)).into(holder.imgView_post);
Run Code Online (Sandbox Code Playgroud)