Android UI概述
本文是我们名为“ Android UI设计–基础 ”的学院课程的一部分。
在本课程中,您将了解Android UI设计的基础知识。 您将了解用户输入,视图和布局以及适配器和片段。 在这里查看 !
1.简介
Android是为智能手机和平板电脑而广泛使用的OS。 这是一个由Google领导的开源项目,根据Apache许可发布。 该许可许可使该操作系统得以广泛采用,并允许制造商自由修改和定制它。 实际上,尽管Android是为智能手机和平板电脑设计的,但它也被用于电视,相机等。 此外,Android拥有一个庞大的社区,可以扩展其功能并创建涵盖几乎所有方面的应用程序。
所有的Android应用程序(称为应用程序)都建立在Android UI框架上。 应用界面是用户看到并与之交互的第一件事。 从用户的角度来看,此框架可使我们的智能手机或平板电脑上安装的每个应用程序的整体体验保持一致。 同时,从开发人员的角度来看,此框架提供了一些基本块,可用于构建复杂且一致的用户界面(API)。
Android UI界面分为三个不同的区域:
- 主屏幕
- 所有应用
- 最近画面
开机时, 主屏幕是“着陆”区域。 该界面是高度可定制的和主题化的。 使用小部件,我们可以创建和个性化“主”屏幕。 所有应用程序是显示已安装应用程序的界面,而最近的屏幕是最后使用的应用程序列表。
自诞生以来,Android在功能和界面方面发生了很大变化。 智能手机功能的增长使创建更具吸引力的应用成为可能。
刚开始,Android中的应用程序没有一致的界面和明确定义的规则,因此每个应用程序都有不同的方法,导航结构和按钮位置。 这引起了用户的困惑,与iOS相比,它是最重要的缺失功能之一。
2. Android应用程序结构和UI模式
Android应用程序彼此之间有很大的不同,因为它们试图满足不同的用户需求。 有些简单的应用程序的UI非常简单,只有一个视图,而另一些复杂的应用程序则具有非常结构化的导航和多个视图。
一般而言,我们可以说Android应用程序是由顶级视图和详细信息/级别视图组成的 。
Google所做的最大努力之一就是定义了一套定义明确的规则,以帮助开发人员创建有吸引力的用户界面。 同时,这些规则可帮助用户以相同的方式浏览每个应用程序。 我们称这种UI一致性 。 此外,Android向开发人员保证了自定义应用外观和使其具有独特性所需的灵活性。 这些规则称为UI模式。 模式是公认的解决已知问题的方法。 因此,拥有定义明确的UI模式目录并知道何时何地应用它们,我们可以创建吸引人的应用程序,这些应用程序不仅具有有趣的功能,而且用户喜欢并且易于使用。
顶层视图
如前所述,顶层视图是应用程序的“着陆”区域,因此我们必须特别注意,因为这是用户首先看到我们的应用程序。 根据我们要显示的信息类型,在设计此视图时可以应用一些特定的模式:
- 固定标签
- 微调器
- 导航抽屉
我们必须根据应用程序的性质仔细选择其中之一。 当我们想向用户提供应用程序中存在的不同视图的概览时,我们可以使用固定选项卡 ,以便用户可以在它们之间轻松切换以显示不同类型的信息。 一个典型的示例是显示技术新闻的应用程序:在这种情况下,我们可以使用不同的选项卡对新闻进行分组,例如(“ Android”,“ iOS”,“游戏”等)。
当我们想直接移动到特定视图微调时,这时候我们可以利用微调直接进入某个特定月份的日历应用程序的情况下。
导航抽屉是Google推出的最新模式之一。 这是一个滑动菜单,通常位于智能手机屏幕的左侧,可由用户打开和关闭。 当我们具有多个顶层视图并且我们希望向用户提供对其中之一的快速访问权限,或者我们希望为用户提供直接移动到一个底层视图的自由时,可以使用此模式。 该模式以某种方式替代了过去广泛使用的称为仪表板的旧模式。 这种模式是一个简单的视图,其中有一些大按钮/图标可以访问特定的视图/应用程序功能。
详细视图
详细视图是一个低级视图,用户可以在其中直接与数据进行交互。 它用于显示数据并进行编辑。 在这种视图中,布局在使数据井井有条和结构化方面起着重要作用。 在此级别上,我们可以实施有效的导航以提高应用程序的可用性。 实际上,我们可以使用滑动视图模式,以便用户可以在不同的详细视图之间移动。 根据我们用来向用户显示详细信息的组件类型,我们可以实现一些低级模式,以简化用户与应用程序的交互。
动作栏
操作栏在Android中相对较新,是在Android 3.0(API级别11)中引入的。 这是众所周知的模式,起着重要的作用。 动作栏是屏幕的一部分,通常位于顶部,可在多个视图之间保持不变。 它提供了一些关键功能:
- 应用品牌:图标区域
- 标题区
- 关键行动领域
- 菜单区
3.标准组件
我们如何建立用户界面? Android提供了一些关键组件,可用于创建遵循我们之前讨论的模式的用户界面。 所有Android用户界面都是使用以下关键组件构建的:
-
View
:它是所有可视组件(控件和小部件)的基类。 android应用中存在的所有控件均派生自此类。View
是一个对象,它可以在智能手机屏幕上绘制内容并允许用户与其进行交互。 -
Viewgroup
:一个ViewGroup
可以包含一个或多个Views
并定义如何在用户界面中放置这些Views
(这些视图与Android LayoutViewgroup
一起使用)。 -
Fragments
:从API级别11引入,此组件封装了一个UI接口。 当我们必须为多个设备或多个屏幕尺寸创建和优化我们的应用程序用户界面时,它们非常有用。 -
Activities
:通常,一个Android应用程序由几个交换数据和信息的活动组成。Activity
负责创建用户界面。
此外,Android提供了几个标准的UI控件,布局管理器和小部件,我们可以不费吹灰之力就可以使用它们,并且可以使用它们快速而简单地创建应用程序。
此外,我们可以扩展它们并创建具有自定义布局和行为的自定义控件。 使用这四个组件并遵循标准的UI模式,我们可以创建“易于使用”的出色应用程序。 无论如何,在构建和编码应用程序时,还需要考虑其他一些方面,例如主题,样式,图像等,这些内容将在以下文章中介绍。
如前所述,Android提供了一些标准的UI组件,可以将其分组:
- 标签
- 微调器
- 选择器
- 清单
- 纽扣
- 对话方块
- 网格列表
- 文字栏位
下图显示了一些Android自定义组件:
如果我们更详细地分析Android用户界面,我们会注意到它具有层次结构,在根处有一个ViewGroup
。 ViewGroup
行为就像一个不可见的容器,在其中按照某些规则放置单个视图。 我们可以将ViewGroup
与ViewGroup
结合使用,以更好地控制视图的位置。 我们必须记住,更复杂的是用户界面需要系统渲染它的时间更长。 因此,为了获得更好的性能,我们应该创建简单的UI。 此外,简洁的界面可帮助用户在使用我们的应用程序时获得更好的体验。
典型的UI结构如下所示:
如果我们使用IDE创建一个简单的android应用,则可以验证UI结构:
从上面的示例中,我们可以注意到,在层次结构的顶部,有一个ViewGroup
(称为RelativeLayout
),然后有一个视图子级列表(控件和小部件)。
当我们想在Android中创建UI时,我们必须创建一些XML格式的文件。 从这个角度来看,Android非常强大,因为我们可以仅以XML格式“描述” UI界面。 然后,当我们编译应用程序并创建apk时,操作系统会将其转换为真实的代码行。 我们将在以后的文章中介绍该主题,在该文章中,我们将描述如何使用布局等对真正的Android UI进行编码。
4.多种设备支持
众所周知,Android是智能手机和平板电脑广泛使用的系统。 它已安装在许多设备上,这对于开发人员来说是一个巨大的机会,因为它可以吸引广泛的受众。 另一方面,使用Android的大量设备对每个Android开发人员都是一个巨大的挑战。 为了提供出色的用户体验,我们必须考虑到我们的应用程序可以在具有不同屏幕分辨率和物理屏幕尺寸的各种设备上运行。
我们必须考虑到我们的应用程序可以在智能手机或平板电脑上运行,并且即使屏幕分辨率和尺寸差异很大,我们也必须提供相同的可用性。 我们的应用必须非常灵活,可以根据其安装所在的设备来调整其布局和控件。 例如,假设我们有一个显示项目列表的应用程序,当用户单击其中一个项目时,该应用程序将显示项目详细信息。 这是非常普遍的情况。 如果我们的应用程序在智能手机上运行,我们需要有两个屏幕,一个屏幕用于列表,一个屏幕用于详细信息,如下所示:
如果我们的应用在平板电脑上运行,则必须在同一屏幕上显示详细信息:
即使系统尽最大努力缩放和调整我们的应用程序大小,使其可以在不同的屏幕尺寸上运行,我们也必须尽最大努力确保我们的应用程序支持多个屏幕。 这是一个巨大的挑战,如果遵循一些指导方针,我们就可以赢得胜利。
在编写应用程序之前,我们需要了解一些关键概念:
- 屏幕尺寸 :这是物理屏幕,换句话说,就是我们设备屏幕的实际尺寸。
- 密度 :它是给定区域中的像素数。 通常我们考虑每英寸点数( dpi )。 这是屏幕质量的度量。
- 方向 :这是屏幕方向的方式。 它可以是风景或肖像。
- 密度独立像素 :这是Android引入的新像素单位度量。 它称为dp 。 一个DP相当于在在160dpi屏幕的一个像素。 创建UI时,我们应该在测量中使用dp单位,在运行时系统会小心地将其转换为实像素。
从屏幕尺寸的角度来看,Android会根据实际屏幕尺寸(以英寸为单位)将设备分为小,中,大和超大(xlarge)四个区域。 另一方面,从dpi的角度来看,我们可以将设备分组为: ldpi(低dpi),mdpi(中dpi),hdpi(高dpi),xhdpi(超高dpi)和最近的xxhdpi 。 当我们使用可绘制对象(即位图)时,这一点很重要,因为我们必须根据不同的屏幕分辨率创建多个图像。
这种分类反映在我们的IDE(即Eclipse或Android Studio)中,因此,如果我们在res
目录下查找,则可以找到一种结构,如下所示:
我们必须遵循的最佳实践是:
- 不要使用以像素表示的固定尺寸,而应该使用dp。
- 为不同的屏幕尺寸提供几种布局结构,我们可以创建多个布局文件。
- 为不同的屏幕分辨率提供多个具有不同分辨率的位图。 我们可以考虑使用9-Patches-Drawables。
此外,Android提供了一种资源限定符机制,可帮助我们更好地控制系统如何选择资源。 通常我们可以使用:
<资源名称> _ <限定符>
其中resource_name可以是例如drawable或layout,而限定符可以是hdpi,large等。 如果您想了解更多信息,请看这里 。
即使我们遵循所有最佳实践来支持应用程序中的多屏显示,在某些情况下也可能不够用,尤其是当我们要支持智能手机和平板电脑时。 在这种情况下,Android引入了Fragment
概念。 从API 11开始可以使用Fragments
,并且有一个库可以保持向后兼容性。 我们将在下一篇文章中介绍这些主题。 敬请关注!
翻译自: https://www.javacodegeeks.com/2015/09/android-ui-overview.html