Android 一种动态定制应用程序资源和颜色的方法

Android 一种动态定制应用程序资源和颜色的方法,android,white-labelling,Android,White Labelling,我有一个应用程序,应该部署为几个不同的客户。 对于每个客户,我希望允许不同的颜色和资源 是否有任何方法可以使应用程序在启动时从internet加载资源和配置,然后在应用程序上使用它们 我知道我可以使用从internet加载配置值。是否有一些平台我可以用来做一些类似的可提取资源 考虑一下这一点的含义:如果您在未连接internet的设备上启动此应用程序,它仍然需要一个本地drawables缓存。如果您的客户想要紧密的用户体验,您真的希望依赖远程源来加载应用程序的UI吗 也许您最好的(尽管扩展性较差

我有一个应用程序,应该部署为几个不同的客户。 对于每个客户,我希望允许不同的颜色和资源

是否有任何方法可以使应用程序在启动时从internet加载资源和配置,然后在应用程序上使用它们


我知道我可以使用从internet加载配置值。是否有一些平台我可以用来做一些类似的可提取资源

考虑一下这一点的含义:如果您在未连接internet的设备上启动此应用程序,它仍然需要一个本地drawables缓存。如果您的客户想要紧密的用户体验,您真的希望依赖远程源来加载应用程序的UI吗

也许您最好的(尽管扩展性较差)解决方案是创建多个APK,每个客户一个。对于“几个不同的客户”,这可能比托管UI组件更简单。对于大量客户,您可能会开始考虑更具创造性的解决方案


编辑:请查看一些关于如何有效管理多个软件包的富有成效的想法。

您可以使用颜色过滤器,请参见此


只需确保这是您想要的过滤器

您需要将远程资源下载到SD卡。然后,您可以使用以下工具动态创建绘图:

Drawable d = Drawable.createFromPath(new File(Environment.getExternalStorageDirectory(), "yourDownloadedBackground.png").getAbsolutePath());
然后使用setBackGroundDrawable()或setBackGround()设置布局背景,仅当您的目标是API 16或更高版本时才使用后者

另一种方法是在布局中放置网络视图而不是图像。这将允许您加载远程图像、本地文件和HTML代码段。在布局中放置Web视图,然后尝试以下操作:

android.webkit.WebView v = (android.webkit.WebView) findViewById(R.id.webView1);
v.loadUrl("http://developer.android.com/assets/images/dac_logo.png");

我所看到的唯一问题是,海报可能希望有完全不同内容的提款权,例如使用相同基本包的不同银行或大学的徽标。
android.webkit.WebView v = (android.webkit.WebView) findViewById(R.id.webView1);
v.loadUrl("http://developer.android.com/assets/images/dac_logo.png");