0

在我的项目中,我需要显示图像。我们在数据库中有图像名称,我需要将这些图像保存在可绘制文件夹中。但是在将这些图像保存在可绘制文件夹中之前,图像名称包含特殊符号、大写字母等。因此,当我尝试将这些图像复制到可绘制文件夹中时,它不支持那些特殊字符和空格。所以我需要更改图像名称,这不是问题。但我的问题是,如果我更改图像名称,我还应该更改数据库中的这些名称。 我的图像数量超过 800 张。那么是否有任何解决方案或手动更改所有内容是唯一的解决方案?请帮我重新评价这个问题。

提前致谢

4

3 回答 3

1

您必须考虑一种好的算法来保留 res 中的图像和 db 中的图像之间的链接。

例如

DB NAME: My_Image_Number_3_.jpg -> RES NAME: my_image_number_3.jpg 在这个简单的例子中,转换只是一个 toLoweCase

于 2012-05-31T12:56:07.777 回答
1

可绘制资源(或任何其他 XML 资源)支持大写字母。您需要将图像存储在 SD 卡、网络服务器或Assets文件夹中。

老实说,在 Drawable 文件夹中存储 800 张图像似乎是一个非常糟糕的主意。同样,如果您将其存储在 Assets 文件夹中,它很可能会使您的应用程序变得非常大。除非图像非常小,否则我建议在用户第一次安装并运行应用程序后将它们从网络服务器下载到 SD 卡上。这将使您的 .apk 文件变小。

于 2012-05-31T12:57:52.820 回答
0

这是我在最近的一个项目中使用的“快速而肮脏”的 C# 算法,用于为 Android 重命名 >1000 个资源。我遍历了项目文件夹中的每个文件,并为每个文件名调用了这个方法来重命名它。这是一段“扔掉”的代码,所以我没有费心使用字符串生成器等。可能会更好,但它确实有效!

private String formatName(String name) 
    {
        String result = name.ToLower();

        result = result.Replace("?", "");
        result = result.Replace("'", "");
        result = result.Replace("`", "");
        result = result.Replace(" ", "_");
        result = result.Replace("-", "_");

        if (Char.IsDigit(result.ToCharArray()[0])){
            result = "num" + result;
        }

        return result;
    }

您可以在 SQL 查询中运行相同的字符串替换来更新您的数据库。

于 2012-05-31T13:10:24.250 回答