2012-06-21 44 views
0

我動態創建的意見,顯示如下在性能方面哪一個更好的動態佈局或XML佈局

public class DynamicLayoutActivity extends Activity 
{ 
     private LinearLayout linear_layout,linear_main; 
    private Button b1,b2,b3; 
    private LinearLayout.LayoutParams linear_layout_params,button_parameters; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     linear_main = new LinearLayout(this); 

     linear_layout = new LinearLayout(this); 
     linear_layout_params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT); 
     linear_layout.setOrientation(LinearLayout.VERTICAL); 
     linear_layout.setGravity(android.view.Gravity.CENTER); 
     linear_layout.setLayoutParams(linear_layout_params); 
     linear_layout.setId(3); 

    //  button_parameters = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT); 

     b1=new Button(this); 
     b1.setText("Button1"); 
     b1.setId(31); 
     b1.setGravity(android.view.Gravity.CENTER); 
//  b1.setLayoutParams(button_parameters); 

     b2=new Button(this); 
     b2.setText("Button1"); 
     b2.setId(32); 
     b2.setGravity(android.view.Gravity.CENTER); 
//  b2.setLayoutParams(button_parameters); 

     b3=new Button(this); 
     b3.setText("Button1"); 
     b3.setId(33); 
     b3.setGravity(android.view.Gravity.CENTER); 
//  b3.setLayoutParams(button_parameters); 

     linear_layout.addView(b1); 
     linear_layout.addView(b2); 
     linear_layout.addView(b3); 

     linear_main.addView(linear_layout); 

     setContentView(linear_main); 
    } 
} 

同樣,我做同樣的聲明寄託都在XML文件中顯示如下

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" > 

     <Button 
      android:id="@+id/button1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Button" /> 

     <Button 
      android:id="@+id/button2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Button" /> 

     <Button 
      android:id="@+id/button3" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Button" /> 

    </LinearLayout> 

假設假設我在線性佈局100層的按鈕上述然後是做的最佳方式,並且具有相關的存儲器佔用和執行時間的最佳性能

如果您支持某個場景,請向我解釋您的觀點爲何該場景最好。這樣我可以瞭解使用的Infalting的XML創建視圖動態

在此先感謝..

回答

1

我會盡量回答你的問題

如果您在定義佈局&控制xml然後你把它們膨脹成代碼,我認爲它會比手動實例化視圖慢一點。但我不認爲我們可以弄清楚區別。

  • 如果您使用基於xml的佈局,您還有以下優點。

他們讓我們能夠支持不同的屏幕分辨率和方向(您需要將main.xml中的文件像LDPI,MDPI,華電國際,xhdpi各自的文件夾中的每個配置文件)

您可以輕鬆更改佈局而無需觸摸Java代碼。

+0

非常感謝您的回答。你能解釋一下爲什麼從xml中膨脹Layout&controls會比手動實例化視圖慢一點。我問這個becoz我處於一個兩難的境地,實例化視圖將需要更多的時間比膨脹一個xml文件:( –

+0

因爲當你膨脹的xml必須有一些算法,分析或遍歷xml找到你請求的元素 –

+0

雅你的權利它使用XMLPullParser解析佈局xml文件 –