Эффективность иерархии глубокого просмотра (если избежать двойного налогообложения) против производительности компоновки ограничений? - PullRequest
0 голосов
/ 06 мая 2020

Является ли производительность представления с глубокой иерархией (2 или более) лучше, чем производительность ограниченного макета, если избежать двойного налогообложения? Как мы можем это измерить? Есть ли порог, когда нам нужно будет избегать более глубокой иерархии? Вот двойное налогообложение при использовании RelativeLayout на Android вопрос о двойном налогообложении

Я также привел простой пример ниже, не могли бы вы сказать, какой макет работает лучше?

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingBottom="@dimen/activity_vertical_margin">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:orientation="vertical">

        <com.example.measurelayout.CustomTextView
            android:id="@+id/allow_notifications_close_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="end"
            android:padding="8dp"
            android:text="1 component" />

        <com.example.measurelayout.CustomTextView
            android:id="@+id/allow_notifications_title_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="24dp"
            android:gravity="center"
            android:layout_gravity="center_horizontal"
            android:text="2 component"/>

        <com.example.measurelayout.CustomTextView
            android:id="@+id/allow_notifications_desc_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:gravity="center"
            android:layout_gravity="center_horizontal"
            android:text="3 component"/>

        <com.example.measurelayout.CustomTextView
            android:id="@+id/allow_notifications_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
            android:text="4 component" />
    </LinearLayout>

</FrameLayout>
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".ConstraintActivity">

    <com.example.measurelayout.CustomTextView
        android:id="@+id/allow_notifications_close_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="end"
        android:layout_marginBottom="8dp"
        android:padding="8dp"
        android:text="1 component"
        app:layout_constraintBottom_toTopOf="@+id/allow_notifications_title_text"
        app:layout_constraintEnd_toEndOf="parent" />

    <com.example.measurelayout.CustomTextView
        android:id="@+id/allow_notifications_title_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:gravity="center"
        android:text="2 component"
        app:layout_constraintBottom_toTopOf="@+id/allow_notifications_desc_text"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

    <com.example.measurelayout.CustomTextView
        android:id="@+id/allow_notifications_desc_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:gravity="center"
        android:text="3 component"
        app:layout_constraintBottom_toTopOf="@+id/allow_notifications_btn"
        app:layout_constraintEnd_toEndOf="@+id/allow_notifications_title_text"
        app:layout_constraintStart_toStartOf="@+id/allow_notifications_title_text" />

    <com.example.measurelayout.CustomTextView
        android:id="@+id/allow_notifications_btn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="4 component"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>
...