Android 高效布局的几点建议

简介: 在Android应用开发过程中,布局是一项最基础的工作。如何进行高效布局,提高开发效率呢? 我经过长期实践,总结了以下几条建议: 一、 静态布局为主,动态布局为辅 1.静态布局 就是我们最常用的,通过xml来进行布局。 优点:所见即所得。布局创建,修改,预览都非常的方便。缺点:灵活性稍差。

同步发布在:http://snowdream.github.io/blog/2016/03/16/android-effective-layout/

在Android应用开发过程中,布局是一项最基础的工作。
如何进行高效布局,提高开发效率呢? 我经过长期实践,总结了以下几条建议:

一、 静态布局为主,动态布局为辅

  1. 静态布局

就是我们最常用的,通过xml来进行布局。

优点:所见即所得。布局创建,修改,预览都非常的方便。
缺点:灵活性稍差。

  1. 动态布局

通过Java代码来实现布局。

优点:灵活性好。在应用运行过程中,可以随时去调整布局,例如:增加未加载的新控件,调整控件的位置等。
缺点:可见性差,维护非常的繁琐。

大家都知道,一个项目,一个功能,不可能自始至终都是同一个人进行维护的。人员流动,工作调整,这些都可能造成以下结果:你去接手别人维护的功能/模块,别人接手你维护的功能/模块。基于这种现状,在Android应用布局方面,可见性,可维护性显得尤为重要。 因此,我推荐的布局原则是:“静态布局为主,动态布局为辅。”

推荐的理由有两点:

  1. 布局是一个相对持续的过程。可能UI/UE会随时让你调整下控件之间的间距,位置等。动态布局,需要每次修改后,编译运行在手机上才能看到实际的效果。而静态布局,可以随时修改,随时预览效果。
  2. 静态布局,你可以通过阅读xml,预览效果,对于整个界面,可以快速的熟悉和掌握。而对于动态布局,你必须确认你对所有有关的代码熟悉后,静态布局和动态布局相结合,在脑海中对整个界面进行拼接,才能有一个整体把握。而随着布局变得复杂,这将变得越来越难。

二、 善用tools工具

有些布局,预览效果非常差。咋一看上去,一片空白。这样其实丧失了静态布局的一大优点“所见即所得。”整个布局之后,你编译运行到手机上,才能看到你设置的属性,间距等是否正常生效了。

这里,我推荐一个原则:“尽量在布局中展示你要的效果。”
怎么实现呢?这里需要用到一个工具,tools。

Tools 简介和用法

Tools工具的使用仅仅针对IDE有效,并不会被打包进应用。

具体步骤如下:

  1. 在布局最外层,加上下面这句话,声明一下。
xmlns:tools="http://schemas.android.com/tools"
  1. 一般的控件属性以“android:”开头。新增一个同样的属性,改为以“tools:”开头。

例如:一个TextView控件,需要设置默认状态为不可见。

<TextView
            android:text="Name"
            android:visiblity="gone"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

但是你想预览它,又担心改为android:visiblity="visible"之后忘了改回来,直接提交了。现在你不必担心,新增一个同样名称的属性,以“tools:”开头,就可以了。

<TextView
            android:text="Name"
            android:visiblity="gone"
            tools:visiblity="visible"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

三、 时刻谨记UI适配

由于Android开源的特性,造成Android手机种类繁多。这些手机拥有不同版本的系统,不同的屏幕分辩率,不同的配置等。
我们在进行布局的时候,要时刻谨记UI适配,尽最大限度去适配不同的分辨率。
这里,我总结几点经验:

  1. Android控件,默认会带有一点padding。 有些背景切图,可能会留有较大的余白。而UI/UE的标注图可能并没有考虑这些因素,因此,UI/UE的标注图仅供参考。实际布局过程中,可能需要稍微调整。
  2. 保留重要标注尺寸,忽略次要标注尺寸。举个简单的例子。假设一个顶部区域,固定高度。需要放置主标题,副标题两个文本控件。 建议这么布局,主标题和副标题使用一个竖直的LinearLayout进行包裹。主标题和副标题控件之间按照标注图设置精准的间距。之后,把整个LinearLayout竖直居中在顶部区域。
  3. 设置android:weight,来进行按照比例布局。
  4. 文本控件,需要考虑,文本过长时的省略策略。
  5. 防止控件相互压盖
  6. 切图至少提供两套,hdpi和xhdpi

参考

  1. Designtime Layout Attributes
  2. Tools Attributes
相关文章
|
6月前
|
XML Android开发 数据安全/隐私保护
10. 【Android教程】网格布局 GridLayout
10. 【Android教程】网格布局 GridLayout
330 1
|
2月前
|
ARouter Android开发
Android不同module布局文件重名被覆盖
Android不同module布局文件重名被覆盖
|
4月前
|
移动开发 监控 前端开发
构建高效Android应用:从优化布局到提升性能
【7月更文挑战第60天】在移动开发领域,一个流畅且响应迅速的应用程序是用户留存的关键。针对Android平台,开发者面临的挑战包括多样化的设备兼容性和性能优化。本文将深入探讨如何通过改进布局设计、内存管理和多线程处理来构建高效的Android应用。我们将剖析布局优化的细节,并讨论最新的Android性能提升策略,以帮助开发者创建更快速、更流畅的用户体验。
73 10
|
6月前
|
Android开发
08. 【Android教程】相对布局 RelativeLayout
08. 【Android教程】相对布局 RelativeLayout
91 0
|
2月前
|
ARouter Android开发
Android不同module布局文件重名被覆盖
Android不同module布局文件重名被覆盖
170 0
|
4月前
|
编解码 Android开发
【Android Studio】使用UI工具绘制,ConstraintLayout 限制性布局,快速上手
本文介绍了Android Studio中使用ConstraintLayout布局的方法,通过创建布局文件、设置控件约束等步骤,快速上手UI设计,并提供了一个TV Launcher界面布局的绘制示例。
74 1
|
5月前
|
Android开发 Kotlin
kotlin开发安卓app,如何让布局自适应系统传统导航和全面屏导航
使用`navigationBarsPadding()`修饰符实现界面自适应,自动处理底部导航栏的内边距,再加上`.padding(bottom = 10.dp)`设定内容与屏幕底部的距离,以完成全面的布局适配。示例代码采用Kotlin。
141 15
|
4月前
|
XML 数据可视化 API
Android经典实战之约束布局ConstraintLayout的实用技巧和经验
ConstraintLayout是Android中一款强大的布局管理器,它通过视图间的约束轻松创建复杂灵活的界面。相较于传统布局,它提供更高灵活性与性能。基本用法涉及XML定义约束,如视图与父布局对齐。此外,它支持百分比尺寸、偏移量控制等高级功能,并配有ConstraintSet和编辑器辅助设计。合理运用可显著提高布局效率及性能。
272 0
|
4月前
|
Android开发
AutoX——当Android中clickable属性显示为false,实际可点击的布局如何处理
AutoX——当Android中clickable属性显示为false,实际可点击的布局如何处理
71 0
|
5月前
|
XML Android开发 数据安全/隐私保护
使用RelativeLayout布局Android界面
使用RelativeLayout布局Android界面