具有layout_weight属性的LinearLayout性能

时间:2014-03-21 15:07:31

标签: java android android-layout

我试图在我的相册应用程序中设计以下视图,在我向StackOverflow询问之后我终于做了一些事情。

当我读到layout_weight属性时,当它在嵌套结构中使用时,可能会遇到一些性能问题。

我打算在用户向下滑动屏幕时通过加载使用以下布局来重复行。

这是布局:

enter image description here

以下是代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/button9"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="#1000b0"
            android:textSize="15sp" />

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="vertical" >

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#d0b0b0"
                android:textSize="15sp" >

                <Button
                    android:id="@+id/button3"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:background="#b170b0"
                    android:textSize="15sp" />

                <Button
                    android:id="@+id/button4"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:background="#b110b0"
                    android:textSize="15sp" />
            </LinearLayout>

            <Button
                android:id="@+id/button2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#1070b0"
                android:textSize="15sp" />
        </LinearLayout>
    </LinearLayout>

    <!-- The second line  --> 

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/button11"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="#a070b0"
            android:textSize="15sp" />

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="vertical" >

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textSize="15sp" >

                <Button
                    android:id="@+id/button12"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:background="#111"
                    android:textSize="15sp" />

                <Button
                    android:id="@+id/button13"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:background="#b110b0"
                    android:textSize="15sp" />
            </LinearLayout>

            <Button
                android:id="@+id/button14"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#7510b0"
                android:textSize="15sp" />
        </LinearLayout>
    </LinearLayout>

</LinearLayout>

请注意,我把“按钮”仅用于测试,它们将是ImageView。 我只使用了LinearLayout。 是否有正确的观点(根据表现)?

我现在只写了两行,它会在以后的运行时动态创建更多的行。当行数达到,可能是20时,它会变慢吗?

我应该更改apporach以获得此视图吗?

由于

1 个答案:

答案 0 :(得分:1)

试试这个..

是的,所有ListView都能看到Lazyadapter,你可以避免它。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/button9"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="#1000b0"
            android:textSize="15sp" />

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="vertical" >

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#d0b0b0"
                android:textSize="15sp" >

                <Button
                    android:id="@+id/button3"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:background="#b170b0"
                    android:textSize="15sp" />

                <Button
                    android:id="@+id/button4"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:background="#b110b0"
                    android:textSize="15sp" />
            </LinearLayout>

            <Button
                android:id="@+id/button2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#1070b0"
                android:textSize="15sp" />
        </LinearLayout>
    </LinearLayout>

    <!-- The second line -->

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/button11"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="#a070b0"
            android:textSize="15sp" />

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="vertical" >

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:textSize="15sp" >

                <Button
                    android:id="@+id/button12"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:background="#111"
                    android:textSize="15sp" />

                <Button
                    android:id="@+id/button13"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:background="#b110b0"
                    android:textSize="15sp" />
            </LinearLayout>

            <Button
                android:id="@+id/button14"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#7510b0"
                android:textSize="15sp" />
        </LinearLayout>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/button9"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="#1000b0"
            android:textSize="15sp" />

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="vertical" >

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#d0b0b0"
                android:textSize="15sp" >

                <Button
                    android:id="@+id/button3"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:background="#b170b0"
                    android:textSize="15sp" />

                <Button
                    android:id="@+id/button4"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:background="#b110b0"
                    android:textSize="15sp" />
            </LinearLayout>

            <Button
                android:id="@+id/button2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#1070b0"
                android:textSize="15sp" />
        </LinearLayout>
    </LinearLayout>

</LinearLayout>