`
ericbaner
  • 浏览: 177588 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

尽量用RelativeLayout来代替多层嵌套的LinearLayout

 
阅读更多

在Android UI开发中,有时会遇到较复杂的布局设计,比如如下:

 

---------------------------------------

             标题      作者           

  图标                                复选框

                         时间

---------------------------------------

 

有同学可能会说这很简单啊,直接一个LinearLayout, 里面三个LinearLayout, 一个里面包含图标,一个包含 标题 作者 时间, 一个包含复选框.  然后,包含 标题 作者 时间的LinearLayout里面还要有两个LinearLayout, 一个包含标题 作者, 一个包含时间。 

 

从实现上来说,这样也是可行的。 不过,由于嵌套的层次较多,在UI render的效率上会不够高。并且,如果这个布局还是一个长列表中的每一项,以上的实现在效率上会更加低效。

 

如何改进呢?

 

对这种情况,RelativeLayout正好派上用场,用相对布局方式,整个布局可以只有一个层级,比上面的LinearLayout实现要减少两个层级, 减少掉五个LinearLayout.

 

 

 

 

分享到:
评论

相关推荐

    android Activity布局初步(二)- 嵌套布局

    在嵌套使用时,你可以创建多层的排列结构,例如一个水平排列的LinearLayout包含几个垂直排列的LinearLayout,以实现更精细的控制。 RelativeLayout则允许视图根据彼此的位置进行对齐,例如一个按钮位于父视图的底部...

    RelativeLayout(相对布局)用法实例讲解

    但是使用LinearLayout的时候也有一个问题,就是当界面比较复杂的时候,需要嵌套多层的 LinearLayout,这样就会降低UI Render的效率(渲染速度),而且如果是listview或者GridView上的 item,效率会更低,另外太多层...

    ListView嵌套ListView的demo

    自定义组件的实现通常涉及到创建一个新的XML布局文件,然后在代码中创建对应的View对象,并可能需要扩展如`LinearLayout`或`RelativeLayout`等布局类。 实现这种嵌套结构时,有几点需要注意: 1. **性能优化**:...

    android 布局例子

    ConstraintLayout是Google推荐的复杂布局管理器,它允许组件之间的相对约束,可以替代多层嵌套的布局,提高性能和易维护性。 - 考虑到性能,应尽量减少布局层次,避免过度使用嵌套,合理选择布局类型以达到最佳的...

    android布局

    而RelativeLayout则更适合复杂布局,如需要多层嵌套和相对位置的界面。有时候,为了实现更复杂的布局效果,开发者也会将LinearLayout和RelativeLayout组合使用,或者利用其他布局,如ConstraintLayout。 **...

    android layout布局分析与优化

    在嵌套LinearLayout时不要同时使用weight属性。 2. **合理选择布局类型**:选择能够减少View树层级的布局方式。 3. **去除不必要的父布局**:检查是否有可以移除的无用父容器。 4. **利用TextView的Drawable属性**:...

    LayoutDemo

    应尽量减少布局层级,使用如`ConstraintLayout`或`RelativeLayout`等可以灵活控制组件位置的布局来代替多层嵌套。 2. **使用轻量级布局** `LinearLayout`、`FrameLayout`和`RelativeLayout`等基础布局虽然简单易用...

    ConstraintLayoutDemo:Android 约束布局示例

    ConstraintLayout有效的解决了多层嵌套复杂布局的问题,加快渲染速度,有点类似与RelativeLayout和LinearLayout的集合,但是远比RelativeLayout和LinearLayout强大。 本文建议的是通过手写代码的方式来构造布局,等...

    Android事件分发、拦截、响应Demo

    例如,一个按钮在LinearLayout内,而LinearLayout又在一个RelativeLayout中。默认情况下,事件会从最外层的RelativeLayout开始,经过LinearLayout,最后到达按钮。如果LinearLayout的onInterceptTouchEvent()返回...

    Android自适应不同屏幕大小的全部方法

    此外,使用 RelativeLayout 也可以实现复杂的布局,通过多层嵌套 LinearLayout 和组合使用 "wrap_content" 和 "match_parent" 可以构建出足够复杂的布局。 在实现自适应不同屏幕大小的布局时,还需要注意屏幕的配置...

    Android_布局<代码,PPT>

    4. 使用`ConstraintLayout`替代多层嵌套,提高布局效率。 5. 使用`android:layout_marginStart`和`android:layout_marginEnd`替代`android:layout_marginLeft`和`android:layout_marginRight`,支持RTL(Right-to-...

    Adroid UI 界面绘制原理分析.rar

    - 使用更高效的布局,例如使用ConstraintLayout替代多层嵌套布局,减少视图层次。 - 使用Inflate Trick避免每次创建View时都调用 inflate 方法。 - 使用ViewStub延迟加载不常用的视图。 8. 内存优化: - 避免...

    Android 分层级筛选控件

    1. **设计数据结构**:为了存储和处理筛选条件,我们需要定义一个合适的数据结构,例如,使用一个嵌套的HashMap或者自定义的Java Bean类,包含每个筛选项的名称、值以及子筛选项等信息。 2. **创建视图**:编写...

    Android软件开发之盘点界面五大布局源码gegei.rar

    约束布局是Android Studio 1.1引入的新型布局,提供了更强大的可视化设计工具,可以实现复杂的界面布局,无需嵌套多层布局。通过设置约束,子视图可以相对于父视图或其他子视图进行定位。`ConstraintLayout`的源码...

    android左右滑动 半个窗体

    在多层嵌套的视图结构中,可能需要处理触摸事件的分发,确保滑动手势能被正确识别。可以通过重写`ViewGroup`的`onInterceptTouchEvent()`方法来拦截触摸事件,然后在`dispatchTouchEvent()`中分发给合适的子视图。 ...

    ExpandableView_java_Android筛选_android筛选_android_

    在实现自定义的ExpandableView时,开发者通常会结合使用ViewGroup(如LinearLayout或RelativeLayout)和Adapter来管理子视图,并通过监听用户的点击事件来控制展开和折叠的行为。 描述中提到的“有点类似于大众点评...

    Android重叠的图片

    3. **ConstraintLayout**:是Android Studio 2.2引入的一个强大的布局工具,它可以替代多层嵌套布局,提供更高效的性能和更直观的可视化编辑。使用`app:layout_constraintStart_toEndOf`、`app:layout_constraintTop...

    Android-ConstraintLayout示例

    - **减少布局层次**:使用`ConstraintLayout`,开发者可以直接通过约束连接各个视图,避免了多层嵌套布局,简化了XML代码,使得布局文件更易于理解和维护。 - **提升渲染性能**:由于`ConstraintLayout`自身优化了...

    安卓Android源码——超爽的抽屉效果.zip

    - 在多层嵌套的布局中,抽屉可能需要拦截触摸事件,防止底层视图响应滑动手势。可以通过覆写`ViewGroup.onInterceptTouchEvent()`来实现。 7. **性能优化:** - 在处理滑动动画时,确保在UI线程之外执行耗时操作...

    Android应用源码高仿去哪儿酒店预定UI部分

    在Android平台上,UI设计主要通过布局(Layout)来实现,如LinearLayout、RelativeLayout、ConstraintLayout等。去哪儿酒店预定UI涉及到多层嵌套布局,以实现复杂交互和视觉效果。开发者需要熟练掌握这些布局的使用...

Global site tag (gtag.js) - Google Analytics