2013-12-18 79 views
-1

我目前正在開發應用程序的原型,並且正在嘗試不同的方法。UI管理中的自定義方法

我從來不喜歡「one Activity - one user interface」方法。由於我還沒有深入到Fragment s,我嘗試了一種不同的方法,直到現在正在工作,但是顯示了一些對我來說甚至可見的泄漏(更不用說對於比我更重要的人)。

基本上,我main_menu.xml看起來像這樣

<!-- The main content view --> 
<LinearLayout 
    android:id="@+id/overall_content_box" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    > 

    <!-- THE PROGRAM CONTENT --> 
    <my.package.path.BoxProgram 
     android:id="@+id/menu_box_program" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 

    <!-- THE CLUB CONTENT --> 
    <my.package.path.custom.BoxClub 
     android:id="@+id/menu_box_club" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 

    <!-- (...) --> 

</LinearLayout> 

<!-- The navigation drawer --> 

<ListView 
    android:id="@+id/left_drawer" 
    android:layout_width="240dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:choiceMode="singleChoice" 
    android:dividerHeight="0dp" 
    android:background="@color/greyD" 
    /> 

正如你看到的,有幾個在這個主要的XML文件自定義LinearLayout秒(比上面兩個以上)。現在從代碼中,無論用戶何時選擇導航抽屜的一個項目,我都會通過一個包含每個「菜單部分」的ID的數組循環,將每個選項的可見性設置爲View.GONE,除了所選的一個。

感謝的結果幾乎與預期的一樣:我有一個單獨的Activity來處理整個應用程序,但是這個設計被分配到多個xml文件中,因此整齊排列。唯一的負面部分是整個Java代碼都在一個文件中,將它吹掉。

這是一個很好的做法嗎?我可以聲稱提供像UI這樣的Fragment,它與舊版Android版本(3.0版之前)兼容嗎?

現在,當我試圖執行中幾個ImageView s的排列在ScrollView菜單部分,應用程序崩潰與java.lang.outOfMemoryError,正如我在網上搜索了一些投入,通過使用複式位圖引起的(雖然我不完全明白爲什麼,因爲我的圖像以jpg格式存儲,並且每個圖像的大小不超過100KB)。

現在作爲第一subquestion,是由於這樣的事實即整個應用被填充在ImageView S中的問題的一個Activity(並因此整個數據總是加載在一起),或者是這樣的受試者的這個不部分(我已經閱讀this article)?

+1

你應該嘗試使用'Fragment's - 這是他們的目的。使用Android支持庫(https://developer.android.com/tools/support-library/index.html)將允許您在支持3.0以前的設備時使用片段。 – prprcupofcoffee

回答

0

不,我不會說這是一個很好的做法。
爲了可維護性(可讀性)和可重用性,例如...

是的,由於兼容性(支持)庫,您可以在Android 3.0之前使用片段。

採取帳戶支持庫不suppport首 ...
對於此您將需要去的老好PreferenceActivity(依然很不錯,儘管折舊)或分支機構的代碼偏好設置,爲較舊的設備使用PreferenceActivity,爲較新的設備使用偏好片段。

這取決於同時有多少位圖在內存中。
我想你可以從磁盤上逐一讀取它們(或一次寫入2/3),而不是。

一半,一半,讓我猜...很多圖像和一個巨大的單片應用程序可能是昂貴的。