-
Notifications
You must be signed in to change notification settings - Fork 778
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
2019-04-17:LinearLayout, FrameLayout, RelativeLayout 哪个效率高, 为什么? #30
Comments
LinearLayout |
FrameLayout > RelativeLayout > LinearLayout |
看使用场景, |
那这个效率更高,还使用场景,如果同级层次结构就能实现的LinearLayout的性能肯定要高于RelativeLayout性能,但是如果使用LinearLayout要多级层次结构才能实现,那肯定使用RelativeLayout的性能更高,所以说要看性能具体看使用场景 |
尽量减少嵌套 |
在布局不复杂的情况下 FrameLayout>LinearLayout>RelativeLayout 布局复杂的情况就是RelativeLayout>LinearLayout,framelayout只适合单个子布局,尽量不要在复杂嵌套多的布局使用 |
对于比较三者的效率那肯定是要在相同布局条件下比较绘制的流畅度及绘制过程,在这里流畅度不好表达,并且受其他外部因素干扰比较多,比如CPU、GPU等等,我说下在绘制过程中的比较,1、Fragment是从上到下的一个堆叠的方式布局的,那当然是绘制速度最快,只需要将本身绘制出来即可,但是由于它的绘制方式导致在复杂场景中直接是不能使用的,所以工作效率来说Fragment仅使用于单一场景,2、LinearLayout 在两个方向上绘制的布局,在工作中使用页比较多,绘制的时候只需要按照指定的方向绘制,绘制效率比Fragment要慢,但使用场景比较多,3、RelativeLayout 它的没个子控件都是需要相对的其他控件来计算,按照View树的绘制流程、在不同的分支上要进行计算相对应的位置,绘制效率最低,但是一般工作中的布局使用较多,所以说这三者之间效率分开来讲个有优势、不足,那一起来讲也是有优势、不足,所以不能绝对的区分三者的效率,好马用好铵 那需求来说 |
这个需要分情况来说。 |
其实从绘制角度上来说,framelayout针对的是单一布局,它是从左上角开始绘制的一个堆叠布局,从其内部实现来看,它的绘制过程是较简单的,LinearLayout是一个方向性布局,在实际绘制过程中,通过方向上的计算来绘制布局的,而RelativeLayout是根据控件的位置来确定位置绘制的,简单布局的话FrameLayout>LinearLayout>RelativeLayout,但是较复杂布局的话,RelativeLayout>LinearLayout>FrameLayout |
相同嵌套层级下: FrameLayout>LinearLayout>RelativeLayout ,现在问这个问题不加上ConstraintLayout |
这个吧,如果单纯看性能 Frgament>LinearLayout>RelativeLayout |
如果不考虑布局的排版要求,那肯定是FrameLayout大于LinearLayout,LinearLayout和RelativeLayout相差无几。
|
首先很抱歉,我上面的回答有误,实际上应该是 测量(Measure)两次,回到原因上面,是因为: |
LinearLayout 和 RelativeLayout 以及FrameLayout 可以完全放弃掉了,建议选择 ConstrainLayout 和 MotionLayout |
在布局简单的情况下使用FrameLayout > LinearLayout > RelativeLayout,因为RelativeLayout会让子View调用两次OnMeasure方法,而LinearLayout只需要调用一次,LinearLayout 在有weight时,也会调用子View2次onMeasure。在不影响层级深度的情况下,使用LinearLayout和FrameLayout而不是RelativeLayout。使用多层LinearLayout嵌套时,尽量使用RelativeLayout,在时间上此时RelativeLayout耗时更小,RelativeLayout中尽量使用padding代替margin,也可以使用include等方法进行布局的优化 |
FrameLayout>LinearLayout>RelativeLayout(简单布局) |
LinearLayout, FrameLayout, RelativeLayout 哪个效率高效率可以分为两方面讲:
在开发中,更快的更健壮的完成任务是每个开发人员都追求的,所以在写布局时,如何更有效率呢?不一样的场景选用不一样的布局。
设计布局关键点
就绘制效率而言
具体绘制效率对比参见文章 Android中RelativeLayout和LinearLayout性能分析 - 简书 |
这些没有从源码分析中找到答案,都是没啥说服依据 |
简单同层次布局FrameLayout>LinearLayout>RelativLayout 复杂嵌套层次的话RelativLayout >LinearLayout>FrameLayout |
这是来自QQ邮箱的假期自动回复邮件。
您好,我最近正在休假中,无法亲自回复您的邮件。我将在假期结束后,尽快给您回复。
|
这个才是正确解, LinearLayout 使用 weight 时和 RelativeLayout 一样都要测量两次, 所以就是 Fragment > LinearLayout >= RelativeLayout |
No description provided.
The text was updated successfully, but these errors were encountered: