繁体   English   中英

我的布局能否提高效率?

[英]Can my layout be improved for efficiency?

我的布局如下图所示。 它被代码夸大并添加到Horizo​​ntalScrollView,有时几百次,并导致内存问题。

我想知道是否可以采取任何措施来提高效率? 最初我使用的是LinearLayouts,用RelativeLayout代替它对滚动产生了巨大的影响。 现在我想知道它是否可以进一步改进?

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="156dp"
    android:layout_height="254dp"
    android:paddingLeft="7dip"
    android:paddingRight="7dip">

    <FrameLayout android:id="@+id/button_frame"
    android:layout_width="156dp"
    android:layout_height="218dp">

    <ImageView android:id="@+id/button_bg"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/image_bg"
        />

        <ImageView android:id="@+id/button_image"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="bottom|right"
        />

        <TextView android:id="@+id/button_select"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="2dip"
        android:layout_marginRight="2dip"
        android:background="@drawable/btn_selector_bg_selected"
        />

        <TextView android:id="@+id/button_selected"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:layout_marginLeft="2dip"
        android:layout_marginRight="2dip"
        android:background="@drawable/title_bg_selected"/>

    </FrameLayout>

    <TextView
    android:id="@+id/button_title"
    android:layout_width="156dp"
    android:layout_height="36dp"
    android:textColor="#ffffff"
    android:singleLine="true"
    android:textSize="13sp"
    android:textStyle="bold"
    android:gravity="center_vertical|left"
    android:ellipsize="end"
    android:paddingLeft="30dip"
    android:paddingRight="5dip"
    android:layout_below="@id/button_frame"
    android:background="@drawable/title_bg"/>

</RelativeLayout>

使用AQuery图像缓存填充ImageView button_image,因此我不确定是否还有更多工作可以改进图像的处理方式。 但任何有关改进的提示都非常感谢。

如果您可以使用ListView而不是Horizo​​ntalScrollView,则可以创建一个使用viewHolder模式的数组适配器,它实质上允许您在列表视图中重复使用每个项目的视图。 请查看此内容以获取更多详细信息: http//www.jmanzano.es/blog/?p = 166

通常,在Android中优化布局的一种好方法是最小化容器在彼此之间的嵌套量。 嵌套布局容器越深,框架必须做的工作就越多,以便为视图层次结构测量,布局和处理事件。

但我想你可能会问错误的问题。

HorizontalScrollViewVerticalScollView不适合您使用它们。 它们意味着保持一个大多数静态的布局,并允许它根据其正在运行的屏幕大小进行滚动。

您需要一个大多数相同视图的重复列表,用户可以滚动。 要使用的正确Android视图容器是ListView ,或者是AdapterView的其他后代之一。

ListView只注意创建/膨胀必要的子视图以填充屏幕上的空间,并在用户滚动时重复使用它们。 这解决了您遇到的内存问题。 它通过要求您将它与Adapter配对 - 一个包装正在显示的实际数据的对象,并按需创建给定数据项的正确视图。

由于您正在尝试进行水平滚动,您可能还会查看Gallery (现在已在Android中弃用)或较新的ViewPager类,这两个类都支持通过大量数据进行水平移动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM