2011-07-05 63 views
4

我已經通過了幾個教程等,發現我可以實現相同的結果定義代碼中的所有我的UI組件。使用xml進行佈局的優點是什麼?

例如

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    TextView tv = new TextView(this); 
    tv.setText("hello"); 
    LinearLayout ll = new LinearLayout(this); 
    ll.addView(tv); 
    setContentView(ll); 
} 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
} 

+

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/textview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:text="@string/hello"/> 

相當於什麼是使用XML這種性能/可維護性好處?

如果程序員喜歡在XML上使用代碼,應該考慮哪些額外的考慮因素?

乾杯,

+0

對於那種重複問題的道歉(正如Yan指出的那樣)。我做了一個搜索,但沒有提出任何相關的問題。 – pstanton

回答

7

使用XML的可維護性好處是什麼?

  1. 將邏輯從表示中分離出來。當你需要重構一些代碼時,這對大型項目有幫助。如果它與UI緊密結合,那麼如果大部分表示邏輯都在代碼中,這項工作將非常容易耗時。
  2. XML的結構很好地與用戶界面的結構相關,即與結構樹類似。

使用XML的性能好處是什麼?

這一切都取決於我想實現。我懷疑有任何明顯的性能差異,但我真的不知道足夠說明它們可能是什麼。

...這就是我的一切=)

+0

實際上,XML的性能較差,因爲它首先需要首先在設備上進行解析:請參閱[Anko Why DSL](https://github.com/Kotlin/anko#why-dsl)。但我想這對大多數項目都不會有太大的影響。 – TmTron

4

你可以參考Why using XML to create GUI is a good practice in Android

對我來說,我覺得這更像是個人的品味。我來自Java Swing背景。當我在做桌面應用程序開發時,我更喜歡創建GUI編程。然而,當涉及到Android開發時,我會堅持基於XML的GUI開發,儘管我贊成使用代碼而不是XML。

這是因爲我傾向於遵循最受青睞的編碼風格和神話,這使我很容易獲得技術支持和教程。

+0

如何使用XML佈局意味着您沒有使用OO構造?這些都是XML下的所有對象,我沒有看到其中的差異。 –

+0

當我說OO時,我的意思是'Label l = new Label()' –

+0

@Yan你的意思是編程的,而不是OOP。 – ThomasW

2

編譯時XML佈局轉換爲Java代碼,因此性能應該相同。我更喜歡使用XML,因爲很多文檔和教程都使用它;這是編寫UI的Android方式。而且,XML往往更容易重用。

2

XML文件已集成到資源框架中,這意味着您可以輕鬆地爲不同的屏幕尺寸(以及密度,語言...)指定不同的佈局。由於設備的多樣性,這在android中很重要。

你當然可以通過編程的方式,但你會添加很多unnessecary代碼膨脹,你的應用程序可能會更難以維護。

目前佈局XML編輯器的狀態是一個問題,但是在google IO上發佈了公告/演示,顯着的改進正在......不能等待。

相關問題