中国的博客,走近我们的产品、技术和文化
Google 中国的博客,走近我们的产品、技术和文化
详细介绍Android设计辅助类库
2015年6月29日
原作者
Ian Lake
, Developer Advocate
翻译,胡坤, 杨智行, 陈庆滔
相比于以前,Android 5.0版本是一个比较大的发布,引入了Material Design作为全新的设计语言,从而让Android整体体验焕然一新。开发者学习Material Design可以从
规范网站
开始,但是我们也理解这对于开发者确实是一个挑战,尤其是对于对老版本Android的向后兼容问题。幸运的是,通过最新的Android设计辅助类库,我们可以将许多重要的设计组件兼容Android 2.1以及以上的版本,包括navigation drawer view, floating labels for editing text, a floating action button, snackbar, tabs, 还有用来连接他们的动画或者滑动的框架。
导航视图
Navigation drawer对于标识和应用内导航是一个非常重要的视觉焦点,而且一致性的设计风格也可以让用户更加容易理解,尤其是第一次进入的用户。
NavigationView
类提供了navigation drawer需要的框架技术,以及通过菜单资源配置导航项目的能力,从而让实现变得更加简单。
可编辑文本的浮动标签
Material Design中的
EditText
还是有改进空间的。目前的EditText,在你输入第一个字节后会隐藏掉提示文本,你也可以将提示文本放到
TextInputLayout
中,从而让提示内容成为EditText之上的浮动标签,保证用户明白自己所处的上下文。
FAB:Floating Action Button
FAB浮动在用户界面之上,代表某个主要的动作。设计类库中的
FloatingActionButton
提供了一个一致性的实现方案,缺省情况下,使用theme中的colorAccent进行着色。
除了正常大小的FAB,如果有其他更重要的视觉元素需要展示,它也可以支持更小的尺寸(fabSize="mini")。因为FloatingActionButton扩展自ImageView,你也可以利用android:src或者其他的方法
setImageDrawable
来控制显示哪个图标。
Snackbar
某个操作之后,
snackbar
可以完美的展示一些轻量级的快速反馈。Snackbars通常展示在屏幕下方,包含一些信息文本,也可以包含一个动作按钮。在超过设定的时间之后,它会自动的隐藏掉屏幕。另外,用户也可以通过滑动的方式删掉。
Tabs
利用Tabs进行不同的视图切换,并不是Material Design的新概念,他们被设定为了一组
top level navigation pattern
或者用来组织应用内的不同内容,例如,不同类型的音乐。
设计类库中的
TabLayout
即实现了固定tabs,也实现了滚动tabs。固定tabs的宽度根据当前视图平均分配,滚动tabs的宽度大小不一定相同。Tabs也可以通过编程的方式动态增加:
但是,在不同tabs的每个垂直页面中,如果你使用了
ViewPager
,你需要从
PagerAdapter
调用
getPageTitle
,然后通过setupWithViewPager函数将他们链接起来。这个用来保证tab的选择事件可以更新ViewPager,页面变化也可以更新被选中的tab。
CoordinatorLayout, 动画、滚动
独特的视觉体验只是Material Design中的一部分:动画是Material Design中的另外一个重要因素。Material Design中有了
touch ripples
和
meaningful transitions
等动画效果,新的设计类库引入了
CoordinatorLayout
,这是一种可以对子视图进行控制的布局效果。这种布局效果,设计类库中的很多组件都受益。
CoordinatorLayout和FAB
一个非常好的例子就是,把FAB加入到CoordinatorLayout布局效果中,然后将CoordinatorLayout传递到Snackbar.make函数中。snackbar不再是显示FAB之上,FAB通过来自于CoordinatorLayout的回调函数,自动的向上移动当snackbar显示的时候。snackbar消失后,在回归到原来的位置。这个功能在Android 3.0以上的设备都是支持的,并不需要修改代码。
CoordinatorLayout也提供了layout_anchor属性,配合layout_anchorGravity使用,可以把一些浮动组件例如FAB放置到其他视图的相对位置。
CoordinatorLayout和app bar
CoordinatorLayout其他的主要使用方法,就是会影响到app bar和
scrolling techniques
的使用。你可能已经在布局中使用了
Toolbar
,为了更容易的定制化界面或者让图标风格和应用更加一体化。设计类库对此提供了更好的支持:使用
AppBarLayout
允许你的工具条和其他组件(例如TabLayout的tabs)在带带有ScrollingViewBehavior属性的兄弟视图中响应滚动事件。
可折叠工具条
在AppBarLayout上直接放置一个工具条,可以让你访问enterAlwaysCollapsed和andexitUntilCollapsed这两个scroll标签,但是不能控制不同的元素的折叠行为。如果需要,可以使用
CollapsingToolbarLayout
。
CoordinatorLayout和自定义窗口
有一个非常重要值得注意的事情是,CoordinatorLayout对于FloatingActionButton和AppBarLayout的运作方式是没有理解的,它仅仅提供一个额外的API
Coordinator.Behavior
,可以允许子视图更好的控制触摸事件、手势,还有彼此之间被定义的各种依赖,以及通过
onDependentViewChanged
来接受回调。视图可以通过指定theCoordinatorLayout.DefaultBehavior annotation来定义一个缺省的行为,或者通过app:layout_behavior="com.example.app.YourView$Behavior"属性在layout文件中设置。这个框架可以让任何组件集成到CoordinatorLayout中。
开始使用
设计类库现在已经可以使用了,使用之前,还请在SDK manager中更新Android Support Repository。只用加入一个新的依赖,
compile
'com.android.support:design:22.2.0',
就可以使用设计类库了。注意的是,因为设计类库依赖Support v4和AppCompat Support Libraries,这些类库也会被自动加载进来。在Android Studio的布局编辑器的设计窗口中,这些新的视图小工具也都是可以使用的,让你可以通过更简单的方式,提前预览新的组件效果。
设计类库、AppCompat、还有所有的Android Support Library都是非常重要的工具,可以帮助你创建一个更加现代和时尚的Android应用。
想了解更多内容,请查阅
这里
。
標籤
编程之夏,UR
创新
创意改善社会 公益温暖中国
促进智能能源利用
大学
谷歌翻译,即时相机翻译,Instant Camera Translation
谷歌十周年系列
谷歌艺术与文化
观妙中国,Shadow Art,智玩皮影
广告
广告安全
互联网,Internet
科技
女性开发者
社会
视频广告
数据中心
数字营销
搜索
网站管理员
文化研究所
艺术计划
音乐搜索
愚人节
增强型广告系列
智能隐形眼镜项目
中小企业
adexchange
Admob
admob sdk
Ads
Adsense
AdWords
android
android m
Android应用开发中国大学生挑战赛
App Inventor
Calendar
cardboard
CES
Chrome
Chrome Web Store
Chrome,Chrome实验
Chrome实验
CI
Code Jam
corporate
Creative
Cross-device
Cultural Institute
culture
Data Center
DevArt
Developer
display
diversity
Doodle
DoubleClick
G+
G2G,Culture
GA&C
gaming
Global Impact Awards
Gmail
Gogle科学挑战赛
Good to Know
Google Ads
Google AdWords
Google Analytics
Google Art Project
Google Arts & Culture
Google Code-in竞赛
Google Demo Day Asia
Google Docs
Google Doodle
Google Drive
Google Drive 云端硬盘
Google Fiber
Google Font
Google for Startups
Google Green
Google I/O
Google Image Search
Google Keep
Google partners
Google Play
Google Science Fair
Google Search
Google Top Contributor Summit
Google Translate
Google Trend
Google Trends
Google Zeitgeist 2012
Google安全系统
Google博士生奖研金
Google翻译
Google奖学金
Google杰出贡献者峰会
Google科学挑战赛
Google网站管理员
Google网站管理员,Webmaster
Google文化研究所
Google在线营销挑战赛
Google中国教育高峰会
IME 输入法
Innovation
Made with Code
maps
mobile ads
mobile ads sdk
Modoo
moonshot
native ads
Nexus
programmatic buying
Project X
Pwn20wn及Pwnium3 黑客大赛
Remarketing. Ads
Search
Security
smb
Solve for X
Street view
student
UR
VR
Web Platform Docs
web security
Webmaster
year in search 2014
YouTube
zeitgeist
博客归档
2024
12月
11月
10月
8月
7月
6月
5月
4月
3月
2月
1月
2023
12月
11月
10月
9月
5月
4月
3月
2月
2022
11月
10月
5月
4月
2月
1月
2021
10月
9月
5月
4月
3月
2月
2020
12月
5月
4月
3月
2019
10月
8月
7月
6月
5月
4月
3月
2018
12月
10月
9月
8月
7月
6月
5月
3月
2月
1月
2017
12月
11月
10月
9月
8月
7月
6月
5月
4月
3月
2月
1月
2016
12月
11月
10月
9月
8月
7月
6月
5月
4月
3月
2月
1月
2015
12月
11月
10月
9月
8月
7月
6月
5月
4月
3月
2月
1月
2014
12月
11月
10月
9月
8月
7月
6月
5月
4月
3月
2月
1月
2013
12月
11月
10月
9月
8月
7月
6月
5月
4月
3月
2月
1月
2012
12月
11月
10月
9月
8月
7月
6月
5月
4月
3月
2月
1月
2011
12月
11月
10月
9月
8月
7月
6月
5月
4月
3月
2月
1月
2010
12月
11月
10月
9月
8月
7月
6月
5月
4月
3月
2月
1月
2009
12月
11月
10月
9月
8月
7月
6月
5月
4月
3月
2月
1月
2008
12月
11月
10月
9月
8月
7月
6月
5月
4月
3月
2月
1月
2007
12月
11月
10月
9月
8月
7月
6月
5月
4月
3月
2月
1月
2006
12月
11月
10月
9月
8月
7月
6月
5月
4月
3月
2月
Feed