UI管理中的自定义方法

时间:2013-12-18 18:44:33

标签: android user-interface

我目前正在开发应用程序的原型,我正在尝试不同的方法。

我从未真正喜欢“一个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)?

1 个答案:

答案 0 :(得分:0)

不,我不会说这是一个好习惯 为了可维护性(可读性)和可重用性,例如......

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

考虑到支持库不支持首选项 ...
为此,您需要选择旧的PreferenceActivity(尽管已弃用,仍然可以正常运行)或者为优先级分支代码,使用旧设备的PreferenceActivity和新设备的preferenceFragment。

这取决于内存中同时有多少位图 我想你可以从磁盘上逐个读取(或者一次2/3)。相反 一半,让我猜...很多图像和一个大单片应用程序可能很昂贵。