我目前正在開發應用程序的原型,並且正在嘗試不同的方法。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)?
你應該嘗試使用'Fragment's - 這是他們的目的。使用Android支持庫(https://developer.android.com/tools/support-library/index.html)將允許您在支持3.0以前的設備時使用片段。 – prprcupofcoffee