当我将我的应用上传到Google控制台并从Play商店下载时,未显示webp格式的图像,但是在我的虚拟设备中可以看到它们。这是我的虚拟电话:

java - 为什么WebAp文件没有显示在AAB中?-LMLPHP

在Google Play中,我得到了以下信息:

java - 为什么WebAp文件没有显示在AAB中?-LMLPHP

我的适配器加载图像的代码如下:

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对帮助我感兴趣。

08-16 15:59