0

我正在创建一个应用程序,它在运行时利用本地设备文件夹(从服务器带回)中的图像,而不是应用程序自己的资源文件夹。

我想利用 Android 的运行时能力为不同的显示类型/方向使用适当的资源文件,类似于它目前对不同资源文件夹(ldpi、hdpi、sw600sp 等)的运行时使用,但在我的情况下,实际上并不完整应用程序构建期间存在的资源文件夹内容。

哪种方法是实现这一目标的首选方法?

i) 拉回服务器图像文件并创建一个 Android 识别的子目录结构,其方式与它目前识别其 res 目录结构的方式相似——即,如果您愿意,可以是运行时伪资源文件夹。

ii) 覆盖事件以捕获现有活动的方向变化并在启动时手动确定显示类型,以便将所有应用程序的活动指向适当的(在运行时本地存储)图像文件。

我不完全确定如何实现上述任何一项,因此任何偏好和一般方法的指示都将不胜感激。

4

2 回答 2

2

您也可以为此使用 Android 的资源识别机制。您可以在服务器上创建不同的图像,并且可以将指向此的链接存储在您的 strings.xml 中,因此您将在不同的 res/values-xx 文件夹中拥有不同的 strings.xml(其中 xx 代表配置限定符)。查看提供资源以了解有关配置限定符的更多信息。

因此在 values-ldpi 中,您的 strings.xml 可以具有以下值:

<string name="icon">http://my-server/images/icon-ldpi.jpg</string>

而 values-hdpi 中的 strings.xml 的值为:

<string name="icon">http://my-server/images/icon-hdpi.jpg</string>

等等。

编辑:如果 url 包含运行时参数,您可以在 strings.xml 中指定相同的内容:

<string name="icon">http://my-server/%1$s/images/icon-ldpi.jpg</string>

您在 Java 代码中使用相同的代码,如下所示:

String iconURL = getResources().getString(R.string.icon, siteId);

如果siteID是 001,则取决于设备类型,imageURL 将是“ http://my-server/001/images/icon-ldpi.jpg”或“ http://my-server/001/images/icon-mdpi.jpg”或“ http://my-server/001/images/icon-hdpi.jpg”或......事实上,您无需在代码中执行任何操作来确定此显示属性去工作。

于 2013-05-22T09:28:38.973 回答
0

事实证明这比我想象的要容易。我可以只返回存储在各种值-xxx 文件夹中的“标识符”字符串,以便构建一组适当的可能文件名。

例如在 values\string.xml 中:

<resources>
    <string name="app_name">Resource Tester</string>
    <string name="action_settings">Settings</string>
    <string name="myindicator_lang">en</string>
    <string name="myindicator_dpi">normal</string>
    <string name="myindicator_orient">port</string>
</resources>

在值-de\string.xml 中:

<resources>   <string name="myindicator_lang">de</string>   </resources>

在值域\string.xml 中:

<resources>   <string name="myindicator_orient">land</string>   </resources>

在值-hdpi\string.xml 中:

<resources>   <string name="myindicator_dpi">hdpi</string>   </resources>

等等

使用在运行时返回的此字符串信息,我可以根据设备配置动态构建所需的文件名,允许我使用适当的名称存储备用服务器/本地存储资源,并让我的应用程序使用最合适的图像文件(如果存在)。

即在服务器/本地存储中有:

mybanner-en.jpg
mybanner-de.jpg
mybanner-de-land.jpg

等等

我现在可以搜索与当时设备配置最匹配的现有存储文件。

非常感谢 Rajesh,为我指明了正确的方向。

于 2013-05-23T10:39:12.260 回答