我有一個應該爲幾個不同的用戶部署的應用程序。 對於每個客戶,我想允許不同的着色和資源。一種方法來實時自定義應用程序資源和顏色
有什麼方法可以讓應用程序在啓動時從互聯網加載資源和配置,然後在應用程序中使用它們。
我知道我可以使用Google Tag Manager從互聯網加載配置值。有什麼平臺可以用來做類似的Drawable資源嗎?
我有一個應該爲幾個不同的用戶部署的應用程序。 對於每個客戶,我想允許不同的着色和資源。一種方法來實時自定義應用程序資源和顏色
有什麼方法可以讓應用程序在啓動時從互聯網加載資源和配置,然後在應用程序中使用它們。
我知道我可以使用Google Tag Manager從互聯網加載配置值。有什麼平臺可以用來做類似的Drawable資源嗎?
請考慮這一點的含義:如果您在非互聯網連接的設備上啓動此應用程序,它仍然需要本地緩存drawables。如果您的客戶需要嚴格的用戶體驗,您是否真的想依賴遠程來源加載應用程序的用戶界面?
也許你最好的(儘管擴展性較差)解決方案是創建多個APK,每個客戶一個。對於「少數不同的客戶」,這可能比託管UI組件更簡單。對於大量的客戶,您可能會開始考慮更多創造性的解決方案。
編輯:請看看this answer關於如何有效管理多個包的一些生產的想法。
可以使用彩色濾光片,看到這個 Modifying the color of an android drawable http://blog.syedgakbar.com/2012/07/changing-color-of-the-drawable-or-imageview-at-runtime-in-android/
int color=Color.rgb(colorR, colorG, colorB);
public static BitmapDrawable changeColor(Bitmap bitmap, Context context, int color){
Bitmap bitmapCopy = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);
Canvas c = new Canvas(bitmapCopy);
Paint p = new Paint();
p.setColorFilter(color, PorterDuff.Mode.MULTIPLY);
c.drawBitmap(bitmap, 0, 0, p);
return new BitmapDrawable(context.getResources(),bitmapCopy);
}
只要確保這就是過濾你想
你需要的遠程資源下載到SD卡。然後,您可以創建在飛行中可繪製:
Drawable d = Drawable.createFromPath(new File(Environment.getExternalStorageDirectory(), "yourDownloadedBackground.png").getAbsolutePath());
,然後設置佈局背景setBackGroundDrawable()或的setBackground(),只有當你靶向API 16個或更多的後者。
另一種方法是將webviews替換爲您的佈局中的圖像。這將允許您加載遠程圖像,本地文件和HTML片段。把網頁視圖在佈局和嘗試這個辦法:
android.webkit.WebView v = (android.webkit.WebView) findViewById(R.id.webView1);
v.loadUrl("http://developer.android.com/assets/images/dac_logo.png");
我這個看到的唯一問題是,海報可能會尋找到具有完全不同的內容繪製資源,如標識爲不同的銀行或大學使用誰是相同的基礎包。 – hunt