Android性能优化之流畅度优化实用系列

10. LinearLayout RelativeLayout

2018-03-29  本文已影响20人  真胖大海

demo

 @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
     for (int i = 0; i < count; i++) {
            View child = views[i];
                measureChildHorizontal(child, params, myWidth, myHeight);
            }
        }
        
          for (int i = 0; i < count; i++) {
            final View child = views[i];
            measureChild(child, params, myWidth, myHeight);
          }
    }

注意

  1. 有一个细节一个View至少会被测量两次
    如下面一个布局文件
    根布局文件1
    LinearLayout被测量2次,View被测量2次
<LinearLayout>
   <View/>
</LinearLayout>

如下的布局文件
RelativeLayout被测量2次,因为View会被RelativeLayout测量两次,所以View被测量4次

<RelativeLayout>
   <View/>
</RelativeLayout>
  1. 对于垂直方向的LinearLayout,如果其layout_height="wrap_cont",而其子View的layout_width="match_parent",则子View会被测量两次。(水平方向的LinearLayout同理)
<LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
    </LinearLayout>
上一篇下一篇

猜你喜欢

热点阅读