Material Design是谷歌提出来的一种新的UI设计理念,意在同意Android开发中UI的风格同一问题,使用户在使用APP时不会因为各种不同风格而导致不适应,使开发出来的APP具有更好的跨平台性。
Material Design被译为“质感设计”,它通过Z轴的引入,使用三维空间的光影变化来解决信息的层级关系,用卡片材料作为信息的载体,通过像现实世界中卡片的裁剪、变换、层叠等效果来实现信息的分块、转换、层级的关系。而且,Material Design尽可能的符合现实物理现象,这使得它的动画非常的自然和平滑。同时,Material Design使用鲜明的色彩,让整个UI变得更加好看。
Material Design常使用的控件有,DrawerLayout、NavigationView、CoordinatorLayout、FloatingActionButton、SwipeRefreshLayout、AppBarLayout、CollapsingToolbarLayout以及CardView等等。它们在XML中的结构往往下图1所示。
图1 控件结构图
UI看起来层次很深,但是其实许多布局只是对FrameLayout的拓展而已,因此几乎不会影响UI的绘制速度,而且能通过简单的布局来实现良好的UI动画,这也是使用Material Design的原因。
接下来我们来简单的了解一下这些控件的作用。
-
DrawerLayout
DrawerLayout控件是为了侧边滑动导航而设计的。它往往有两个直接子布局,第一个是正常情况下屏幕显示的部分,如图1中CoordinatorLayout所包裹的部分。而第二部分作为用户在从一侧横向滑动时弹出的菜单,如图1中NavigationView部分。
DrawerLayout中一个重要的属性是layout_gravity。通过设置不同的值可以改变滑动导航出来的方向。举个例子,layout_gravity="start"表示滑动导航出来的方向跟随系统语言方向。例如系统语言为汉语时,导航栏从左边出现,当语言为阿拉伯语时从右边出现。
-
NavigationView
NavigationView是Google官方根据Material Design设计理念设计的支持库控件。它可以很简单的实现精美的导航栏效果,如图二所示:
图2 导航效果图