Android Lint は、ネストされたウェイトを実行すると、ネストされたウェイトがパフォーマンスに悪いという警告を表示するので、ネストされたウェイト レイアウトを囲む余分なレイアウトを追加するとどうなるか疑問に思っていました。パフォーマンスに違いはありますか?
ここの人は、レイアウトの重みにはウィジェットを 2 回測定する必要があると言いました。ゼロ以外の重みを持つ LinearLayout が、ゼロ以外の重みを持つ別の LinearLayout 内にネストされている場合、測定値の数は指数関数的に増加します。
だから私は疑問に思っていた
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:baselineAligned="false"
android:gravity="center"
android:orientation="horizontal" >
<FrameLayout
android:id="@+id/fl_topleft"
android:layout_width="0dip"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/shape" />
<FrameLayout
android:id="@+id/fl_topright"
android:layout_width="0dip"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/shape" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:baselineAligned="false"
android:gravity="center"
android:orientation="horizontal" >
<FrameLayout
android:id="@+id/fl_bottomleft"
android:layout_width="0dip"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/shape" />
<FrameLayout
android:id="@+id/fl_bottomright"
android:layout_width="0dip"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/shape" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
より良い
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dip"
android:orientation="horizontal"
android:layout_weight="1" >
<FrameLayout
android:id="@+id/fl_topleft"
android:layout_width="0dip"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/shape" />
<FrameLayout
android:id="@+id/fl_topright"
android:layout_width="0dip"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/shape" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dip"
android:orientation="horizontal"
android:layout_weight="1" >
<FrameLayout
android:id="@+id/fl_bottomleft"
android:layout_width="0dip"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/shape" />
<FrameLayout
android:id="@+id/fl_bottomright"
android:layout_width="0dip"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/shape" />
</LinearLayout>
</LinearLayout>