2012-05-23 39 views
1

我必須評估一些移動技術,並有一個問題。是否可以從web服務的xml在android中創建佈局?

我們有web應用程序。它是客戶端上的javascript,它使用我們專有的視圖格式從服務器獲取xml。應用程序轉換它,並查看HTML。

我們想在Android上本地化 - 我們的應用程序會通過http(可以更改它的格式)從web服務獲取這些xml並創建視圖。

它可行嗎?這是否足夠有效?

我知道我可以用Java和一些XML格式創建佈局。我可以從Web動態加載這些xml並使用它們來擴充佈局(在教程中,那些xmls僅在資源中)?或者讓我解析我們的xml並調用適當的Java方法 - 解決方案效率如何?

回答

2

資源的佈局文件夾中的XML在編譯時轉換,所以在事後加載不會有幫助。

您仍然可以動態地解析XML並以編程方式從XML構建佈局,您可能只需擁有JavaScript版本的JavaScript就可以實現轉換專有格式 - 但這取決於您的格式。

它在速度方面效率不高(很多取決於您的網絡和緩存代碼,但仍然在您的視圖構建代碼上),但它會節省安裝空間並允許您遠程更新該視圖無需發佈應用程序的新版本。

編輯,擴大和增加了一些代碼:

可以膨脹任何佈局資源的XML文件,可以在其中插入,如果你選擇其他圖的圖,看看LayoutInflater膨脹的觀點和然後只需使用ViewGroup擴展視圖(如LinearLayout或RelativeLayout)並添加到該視圖。

的一些代碼,一個簡單的例子:

protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    LinearLayout ll = new LinearLayout(this); 
    setContentView(ll); 
    TextView tv = new TextView(this); 
    tv.setText("A message"); 
    ll.addView(tv); 
} 

它笨重,缺少了很多格式的,但提供了一個基本的機制有一種觀點認爲添加到另一個。

,並且應用佈局吹氣的例子:

View convertView = LayoutInflater.from(Main.this).inflate(R.layout.account_entry, null, false); 

我會建議爲你將要自己以後將其添加到特定視圖使用空,假的最後兩個參數。

+0

我們的格式非常簡單,並且有很多默認設置,所以在Android的局部視圖概念中可能存在這種情況。我可以定義button.xml,label.xml並以某種方式加載到視圖中嗎? – dhuCerbin

+0

我已經用一些例子更新了答案,但是可以。 – zeetoobiker

相關問題