美文网首页工具
Android 减少无用布局

Android 减少无用布局

作者: Android深夜食堂 | 来源:发表于2018-07-25 16:32 被阅读189次

讲一下android studio Inspect Code中的Android > Lint > Performance >UseLess parent layout。

场景

在布局对齐的时候,总是会写一个RelativeLayout去包裹好几个child View,再通过设置centerInParent去控制居中。这时候AS往往会给出warning,parent is possibly useless。

原因分析

添加了一个不必要的额外的视图(增加你的布局深度)。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/detailLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
        <Button
            android:id="@+id/downloadFormsButton"
            android:enabled="false"
            android:layout_alignParentLeft="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:text="@string/download_forms_button" />
        <TextView
            android:id="@+id/formErrorMsg"
            android:layout_alignParentRight="true"
            android:layout_alignParentBottom="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:textSize="16dp" >
        </TextView>
    </RelativeLayout>
</LinearLayout>

ps:如果加一个background,warning就没有了。

解决方法

  1. 如果布局简单,不影响,直接删除父布局

  2. 使用space和Linenarlayout,并设置layout_weight来控制居中

  3. 充分使用TextView的drawable属性(drawableTop)

  4. 如果是root layout,那么可以在inflate的时候,注意参数的传值

     public View inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot)
    

当root不为null,attachToRoot为true时,表示将resource指定的布局添加到root中,添加的过程中resource所指定的的布局的根节点的各个属性都是有效的

如果我想让linearlayout的根节点有效,又不想让其处于某一个容器中,那我就可以设置root不为null,而attachToRoot为false

总结

以上所有内容对过度绘制完全没有作用

备注

相关文章

  • Android 减少无用布局

    讲一下android studio Inspect Code中的Android > Lint > Performa...

  • Android性能优化-布局优化

    一、删除无用控件和层级 布局优化的思想很简单,就是尽量减少布局文件的层级,布局层级少了,那么Android绘制时的...

  • Android 性能优化 相关

    一 布局优化 核心思想:减少布局文件层级布局层级减少 -> 绘制工作量减少 ->性能提高 删除布局中无用控件和层级...

  • Android 优化

    一. 布局优化 核心思想:减少布局文件层级布局层级减少 -> 绘制工作量减少 ->性能提高 删除布局中无用控件和层...

  • Android性能优化方法

    学习资料 《Android开发艺术探索》 布局优化 思想概述: 尽量减少布局文件的层次(android绘制时的工...

  • Android性能优化---笔记

    1-布局优化 尽量减少布局的层级删除布局中的无用控件和层级 使用性能较低的ViewGroup、 ,标...

  • Android 性能优化的方法

    一、布局优化 1、尽量减少布局文件的层级。 2、删除布局中无用的控件和层级、 3、有选择的使用性能...

  • 第15章 Android性能优化

    布局优化使用RelativeLayout,减少嵌套 :用于布局重用,只支持android:layout_开头的属性...

  • 减少android app应用包大小

    减少支持的语言: 删除无用的资源:android studio>analyze>run inspection by...

  • Android的布局优化

    Android的布局优化思想很简单,就是尽可能减少布局文件的层级,布局层级少了意味着 Android 绘制时工作量...

网友评论

  • 78983551cc90:- 使用merge
    - 过于复杂考虑ConstraintLayout
    - 使用ViewStub
    78983551cc90:@Android深夜食堂 https://juejin.im/post/5a041845f265da430a500824 可以看这篇文章学习ConstraintLayout, 包含了全部的特性
    78983551cc90:@Android深夜食堂 merge 比 include 就是少一个层级
    Android深夜食堂:merge只能说是清晰view层级,并不能起到减少层级的作用
    ConstraintLayout很棒,使用起来,要改变当前的布局思维,刚上手,还不太会使。
    ViewStub也不错,但是要结合具体的使用场景。

本文标题:Android 减少无用布局

本文链接:https://www.haomeiwen.com/subject/mktmmftx.html