当我将我的应用上传到Google控制台并从Play商店下载时,未显示webp格式的图像,但是在我的虚拟设备中可以看到它们。这是我的虚拟电话:
在Google Play中,我得到了以下信息:
我的适配器加载图像的代码如下:
public void bind(final FruitList fruitList, final OnItemClickListener listener) {
Glide.with(context).load(loadImage(fruitList.getFruitPicture())).into(fruitImage);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
listener.onItemClick(fruitList, getAdapterPosition());
}
});
}
private int loadImage(String mImageName) {
return context.getResources().getIdentifier(mImageName, "drawable", context.getPackageName());
}
在我的数据库中,我只有图像的名称,而通过Adapter类的loadImage方法,我得到的是整数。有趣的是,当我直接在ImageView中使用webp图像时,如果将它们加载。
最佳答案
我在android开发人员中搜索时,发现了有关收缩的内容。我阅读的部分位于下一个链接-https://developer.android.com/studio/build/shrink-code#strict-reference-checks
但总的来说,Shrink会忽略您不使用的所有资源或代码,因此我创建了一种动态生成字符串的方法,在我的情况下,我生成了图片的名称,因此Shrink忽略了所有图片,因为我从未使用它或在我的代码或布局中调用它。
因此,Android的建议说我需要使用String.format来生成我的动态字符串。
Java中的方法是下一个:
String name = String.format("img_%1d", angle + 1);
res = getResources().getIdentifier(name, "drawable", getPackageName());
就我而言,我通过以下方式使用它:
private int loadImage(String mImageName) {
String newName = String.format("if_%1$s", mImageName.substring(3, mImageName.length()));
return context.getResources().getIdentifier(newName, "drawable", context.getPackageName());
}
就是这样,完美地工作了。感谢Mike和Nagvadiya Vishal对帮助我感兴趣。