我目前正在开发应用程序的原型,我正在尝试不同的方法。
我从未真正喜欢“一个Activity
- 一个用户界面”方法。由于我还没有进入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代码都在一个文件中,将其炸毁。
这是一个好习惯吗?我是否可以声称提供类似于Fragment
的用户界面,与旧的Android版本兼容(3.0之前)?
现在,当我尝试实现一个菜单部分,其中ImageView
中排列了多个ScrollView
时,应用程序崩溃了java.lang.outOfMemoryError
,当我搜索互联网时一些输入,是由使用多个位图引起的(虽然我不完全理解为什么,因为我的图像存储为jpg并且每个都不超过100KB的大小)。
现在作为第一个子问题,问题是ImageView
是由于整个应用程序填充在一个Activity
中(因此整个数据总是被加载在一起),或者这不是这个主题的一部分(我已经阅读this article)?
答案 0 :(得分:0)
不,我不会说这是一个好习惯
为了可维护性(可读性)和可重用性,例如......
是的,由于兼容性(支持)库,您可以在Android 3.0之前使用片段。
考虑到支持库不支持首选项 ...
为此,您需要选择旧的PreferenceActivity(尽管已弃用,仍然可以正常运行)或者为优先级分支代码,使用旧设备的PreferenceActivity和新设备的preferenceFragment。
这取决于内存中同时有多少位图 我想你可以从磁盘上逐个读取(或者一次2/3)。相反 一半,让我猜...很多图像和一个大单片应用程序可能很昂贵。