我想在drawable资源中添加200多个图标(小于50x50px)。拖放对我来说不起作用。使用“新建图像”资产仅允许上传单张照片。
这是我的项目资源文件夹结构:
将图片添加到drawable文件夹后,我无法获取图片。这是我的代码
Resources res = activity.getResources();
String mDrawableName = user.getNat().toLowerCase() + ".png";
int resourceId = res.getIdentifier(mDrawableName , "drawable", activity.getPackageName());
Drawable drawable = res.getDrawable(resourceId);
countryIcon.setImageDrawable(drawable );
为什么我无法在drawables中找到图像?
我应该在文件资源管理器/查找器中复制照片?我有不同尺寸的可绘制文件夹和mipmap文件夹
在项目中有200个png是个好主意吗? (我有不同的代码,如33483477,每个代码我都有一个我需要显示的图像)
答案 0 :(得分:3)
只需将它们直接复制到<your project>/<your module>/src/main/res/drawable[-qualifier]
下的项目中。
如果没有项目的其他详细信息,我无法具体说明这些应该存在哪些可绘制的资源文件夹(-hdpi
,-nodpi
?)。
在项目中有200个png是个好主意吗?
取决于尺寸。 APK大小限制为100MiB。如果更大,您可以暂存expansion files,这些数据基本上是不透明的数据存档。
除此之外,您应该考虑图像的使用模式。是否所有用户都会查看所有图片?重点是,如果用户最终必须下载所有这些,将它们全部捆绑在APK中可能没问题。如果他们只使用其中一些,让他们全部下载(在你的APK中)是浪费他们的带宽。
将图像暂存在服务器上并按需下载它们会给您的应用带来一点复杂性,但这是一种成熟的模式。
答案 1 :(得分:1)
我使用下面的代码来获取drawable。希望它能为你效劳。不需要.png文件扩展名。多数民众赞成你做错了什么。在调用getIdentifier之前也使用getResources()方法。
String mDrawableName = user.getNat().toLowerCase(); //image or icon name. not need extention .png
int resourceId = getResources().getIdentifier(mDrawableName, "drawable", getPackageName()); // or use context.getResources(). If you use fragments, use getActivity().
Drawable drawable = getResources().getDrawable(resourceId);
countryIcon.setImageDrawable(drawable );