位置: 编程技术 - 正文

Android Design Support Library

编辑:rootadmin
Android Design Support Library 原文链接 : Android Design Support Library 原文作者 : Android Developers Blog 译文出自 : Android Design Support Library | Android Developers Blog 译者 : MiJack 状态 : 校对完成

推荐整理分享Android Design Support Library,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

Posted by Ian Lake, Developer Advocate

Android 5.0是有史以来最重要的Android 版本之一,这其中有很大部分要归功于Material design的引入,这种新的设计语言让整个Android的用户体验焕然一新。我们的详细专题是帮助你开始采用Material Design。但是我们也知道,这种设计对于开发者,尤其是那些在意向后兼容的开发者来说是一种挑战。在Android Design Support Library的帮助下,我们为所有的开发者,所有2.1以上的设备,带来了一些重要的Material design控件。你可以在这里面找到Navigation Drawer View,输入控件的悬浮标签,Floating Action Button,Snackbar,Tab以及将这些控件结合在一起的手势滚动框架。

YouTube的介绍

Navigation View

Navigation drawer是app识别度与内部导航的关键,保持这里设计上的一致性对app的可用性至关重要,尤其是对于第一次使用的用户。 NavigationView 通过提供抽屉导航所需的框架让实现更简单,同时它还能够直接通过菜单资源文件直接生成导航元素。

把NavigationView作为DrawerLayout的内容视图来使用,布局如下:

你会注意到 NavigationView 的两个属性:app:headerLayout - 控制头部的布局, app:menu - 导航菜单的资源文件(也可以在运行时配置)。NavigationView处理好了和状态栏的关系,可以确保NavigationView在API+设备上正确的和状态栏交互。

最简单的抽屉菜单往往是几个可点击的菜单的集合:

被点击过的item会高亮显示在抽屉菜单中,让用户知道当前是哪个菜单被选中。 你也可以在menu中使用subheader来为菜单分组:

你可以通过设置一个OnNavigationItemSelectedListener,使用其setNavigationItemSelectedListener()来获得元素被选中的回调事件。它为你提供可以点击的MenuItem,让你可以处理选择事件,改变复选框状态,加载新内容,关闭导航菜单,以及其他任何你想做的操作。

Floating labels for editing text

即便是十分简单的EditText,在Material Design 中也有提升的空间。在EditText中,当你填入第一个字符后,hint就消失了。现在将它换成TextInputLayout,提示信息会变成一个显示在EditText之上的floating label,这样用户就始终知道他们现在输入的是什么。

除此以外,还可以通过setError()设置当用户输入不合法时的Error提示;

Floating Action Button

Floating action button是一个负责显示界面基本操作的圆形按钮。Design library中的FloatingActionButton 实现了一个默认颜色为主题中colorAccent的悬浮操作按钮。

除了一般大小的悬浮操作按钮,它还支持mini size(fabSize=”mini”)。FloatingActionButton继承自ImageView,你可以使用android:src或者ImageView的任意方法,比如[setImageDrawable()]( video

Snackbar,可以通过滑动或者点击进行交互,可以看作是比Toast更强大的快速反馈机制,你会发现他们的API非常相似。

你应该注意到了make()方法中把一个View作为第一个参数,Snackbar试图找到一个合适的父亲以确保自己是被放置于底部。

Tabs

通过选项卡的方式切换View并不是Material design中才有的新概念,它们和顶层导航模式或者组织app中不同分组内容(比如,不同风格的音乐)是同一个概念。

Design library的TabLayout 既实现了固定的选项卡(View的宽度平均分配),也实现了可滚动的选项卡(View宽度不固定同时可以横向滚动),也可以通过编写代码添加Tab。

如果,你使用ViewPager在tab之间横向切换,你可以直接从PagerAdapter的getPageTitle()中创建选项卡,然后使用setupWithViewPager()将两者联系在一起。它可以使tab的选中事件能更新ViewPager,同时ViewPager的页面改变能更新tab的选中状态。

CoordinatorLayout, 动作和滚动

独特的视觉效果只是Material design小小的一部分:运动也是设计好一款Material designed应用的重要组成部分。而在Material design中,包括触摸Ripple和有意义的转场,Design library引入CoordinatorLayout,一个从另一层面去控制子view之间触摸事件的布局,Design library中的很多控件都利用了它。

CoordinatorLayout和Floating Action Buttons

一个很好的例子就是当你将FloatingActionButton作为一个子View添加进CoordinatorLayout并且将CoordinatorLayout传递给 Snackbar.make(),在3.0及其以上的设备上,Snackbar不会显示在悬浮按钮的上面,而是FloatingActionButton利用CoordinatorLayout提供的回调方法,在Snackbar以动画效果进入的时候自动向上移动让出位置,并且在Snackbar动画地消失的时候回到原来的位置,不需要额外的代码。

example video

CoordinatorLayout还提供了layout_anchor和layout_anchorGravity属性一起配合使用,可以用于放置floating view,比如FloatingActionButton与其他View的相对位置

CoordinatorLayout 和app bar

另一个比较重要的场合是CoordinatorLayout结合app bar (或者action bar)和 滚动处理. 你可能在你的布局里已经使用了Toolbar, 能让你自定义外观,将应用中最显眼的部分和其他部分整合到一起. Design library采用了进一步的解决方案:使用AppBarLayout可以让Toolbar和其他View(例如展示Tab的TabLayout)对滚动事件作出反应,前提是他们在一个标有ScrollingViewBehavior的View中.因此,你可以创建如下的布局:

现在,随着用户滚动RecyclerView,AppBarLayout通过子视图上的scroll flag,处理事件作出反应,控制他们如何进入,如何退出。Flag包括:

scroll: 所有想滚动出屏幕的view都需要设置这个flag- 没有设置这个flag的view将被固定在屏幕顶部。 enterAlways: 这个flag让任意向下的滚动都会导致该view变为可见,启用”快速返回”模式。 enterAlwaysCollapsed: 当你的视图已经设置minHeight属性又使用此标志时,你的视图只会在最小高度处进入,只有当滚动视图到达顶部时才扩大到完整高度。 exitUntilCollapsed: 在滚动过程中,只有当视图折叠到最小高度的时候,它才退出屏幕。

注意:那些使用Scroll flag的视图必须在其他视图之前声明。这样才能确保所有的视图从顶部撤离,剩下的元素固定在前面(译者注:剩下的元素压在其他元素的上面)。

折叠 Toolbars

直接向AppBarLayout添加ToolBar,你需要添加enteralwayscollapsed和exituntilcollapsed两个滚动Flag,但是不能在细节上不同的元素对此的反应。为此,您可以使用 CollapsingToolbarLayout:

这个设置使用collapsingtoolbarlayout的layout_collapsemode =”pin” 确保在View折叠时,Toolbar本身仍然在屏幕顶部。更好的是,当你同时使用collapsingtoolbarlayout和Toolbar,当布局完全可见时,标题看上去明显变大了;当布局折叠完成后,它恢复到其默认大小。请注意,在这些情况下,你应该调用CollapsingToolbarLayout#settitle() ,而不是调用Toolbar。

example video

如果你希望添加压住特定的视图效果,您可以使用app:layout_collapsemode =”parallax”(和app:layout_collapseparallaxmultiplier =“0.7”(可选,用于设置视差乘数)实现视差滚动(也就是说ImageView,作为Toolbar的兄弟节点,在collapsingtoolbarlayout中)。在这种情况下,建议在CollapsingToolbarLayout中设置 app:contentScrim=”?attr/colorPrimary”这一属性,这样,当视图折叠的时候,就会有蒙上纱布的渐变效果。

example video

CoordinatorLayout与自定义控件

还有一件需要注意的事情,CoordinatorLayout跟FloatingActionButton或AppBarLayout需要一定的配置-它在Coordinator.Behavior提供了一些API,子视图既可以更好地控制触摸事件也可以通过onDependentViewChanged()给别人提供一个回调方法。

Views可以用CoordinatorLayout.DefaultBehavior(YourView.Behavior.class)注解(annotation)声明默认的Behavior,或者在你的布局文件中声明app:layout_behavior=”com.example.app.YourView$Behavior” 属性. 这样做,就可以将任何一个View和CoordinatorLayout整合在一起.

马上使用吧!Android Design Support Library

Design library现在就可以使用,请确保已经用SDk Manager更新了Android Support Repository. 然后添加一条dependency,你就可以使用Design library了:

Navigation View

Navigation drawer是app识别度与内部导航的关键,保持这里设计上的一致性对app的可用性至关重要,尤其是对于第一次使用的用户。 NavigationView 通过提供抽屉导航所需的框架让实现更简单,同时它还能够直接通过菜单资源文件直接生成导航元素。

把NavigationView作为DrawerLayout的内容视图来使用,布局如下:

你会注意到 NavigationView 的两个属性:app:headerLayout - 控制头部的布局, app:menu - 导航菜单的资源文件(也可以在运行时配置)。NavigationView处理好了和状态栏的关系,可以确保NavigationView在API+设备上正确的和状态栏交互。

最简单的抽屉菜单往往是几个可点击的菜单的集合:

被点击过的item会高亮显示在抽屉菜单中,让用户知道当前是哪个菜单被选中。 你也可以在menu中使用subheader来为菜单分组:

你可以通过设置一个OnNavigationItemSelectedListener,使用其setNavigationItemSelectedListener()来获得元素被选中的回调事件。它为你提供可以点击的MenuItem,让你可以处理选择事件,改变复选框状态,加载新内容,关闭导航菜单,以及其他任何你想做的操作。

Floating labels for editing text

即便是十分简单的EditText,在Material Design 中也有提升的空间。在EditText中,当你填入第一个字符后,hint就消失了。现在将它换成TextInputLayout,提示信息会变成一个显示在EditText之上的floating label,这样用户就始终知道他们现在输入的是什么。

除此以外,还可以通过setError()设置当用户输入不合法时的Error提示;

Floating Action Button

Floating action button是一个负责显示界面基本操作的圆形按钮。Design library中的FloatingActionButton 实现了一个默认颜色为主题中colorAccent的悬浮操作按钮。

除了一般大小的悬浮操作按钮,它还支持mini size(fabSize=”mini”)。FloatingActionButton继承自ImageView,你可以使用android:src或者ImageView的任意方法,比如[setImageDrawable()]( video

Snackbar,可以通过滑动或者点击进行交互,可以看作是比Toast更强大的快速反馈机制,你会发现他们的API非常相似。

你应该注意到了make()方法中把一个View作为第一个参数,Snackbar试图找到一个合适的父亲以确保自己是被放置于底部。

Tabs

通过选项卡的方式切换View并不是Material design中才有的新概念,它们和顶层导航模式或者组织app中不同分组内容(比如,不同风格的音乐)是同一个概念。

Design library的TabLayout 既实现了固定的选项卡(View的宽度平均分配),也实现了可滚动的选项卡(View宽度不固定同时可以横向滚动),也可以通过编写代码添加Tab。

如果,你使用ViewPager在tab之间横向切换,你可以直接从PagerAdapter的getPageTitle()中创建选项卡,然后使用setupWithViewPager()将两者联系在一起。它可以使tab的选中事件能更新ViewPager,同时ViewPager的页面改变能更新tab的选中状态。

CoordinatorLayout, 动作和滚动

独特的视觉效果只是Material design小小的一部分:运动也是设计好一款Material designed应用的重要组成部分。而在Material design中,包括触摸Ripple和有意义的转场,Design library引入CoordinatorLayout,一个从另一层面去控制子view之间触摸事件的布局,Design library中的很多控件都利用了它。

CoordinatorLayout和Floating Action Buttons

一个很好的例子就是当你将FloatingActionButton作为一个子View添加进CoordinatorLayout并且将CoordinatorLayout传递给 Snackbar.make(),在3.0及其以上的设备上,Snackbar不会显示在悬浮按钮的上面,而是FloatingActionButton利用CoordinatorLayout提供的回调方法,在Snackbar以动画效果进入的时候自动向上移动让出位置,并且在Snackbar动画地消失的时候回到原来的位置,不需要额外的代码。

example video

CoordinatorLayout还提供了layout_anchor和layout_anchorGravity属性一起配合使用,可以用于放置floating view,比如FloatingActionButton与其他View的相对位置

CoordinatorLayout 和app bar

另一个比较重要的场合是CoordinatorLayout结合app bar (或者action bar)和 滚动处理. 你可能在你的布局里已经使用了Toolbar, 能让你自定义外观,将应用中最显眼的部分和其他部分整合到一起. Design library采用了进一步的解决方案:使用AppBarLayout可以让Toolbar和其他View(例如展示Tab的TabLayout)对滚动事件作出反应,前提是他们在一个标有ScrollingViewBehavior的View中.因此,你可以创建如下的布局:

现在,随着用户滚动RecyclerView,AppBarLayout通过子视图上的scroll flag,处理事件作出反应,控制他们如何进入,如何退出。Flag包括:

scroll: 所有想滚动出屏幕的view都需要设置这个flag- 没有设置这个flag的view将被固定在屏幕顶部。 enterAlways: 这个flag让任意向下的滚动都会导致该view变为可见,启用”快速返回”模式。 enterAlwaysCollapsed: 当你的视图已经设置minHeight属性又使用此标志时,你的视图只会在最小高度处进入,只有当滚动视图到达顶部时才扩大到完整高度。 exitUntilCollapsed: 在滚动过程中,只有当视图折叠到最小高度的时候,它才退出屏幕。

注意:那些使用Scroll flag的视图必须在其他视图之前声明。这样才能确保所有的视图从顶部撤离,剩下的元素固定在前面(译者注:剩下的元素压在其他元素的上面)。

折叠 Toolbars

直接向AppBarLayout添加ToolBar,你需要添加enteralwayscollapsed和exituntilcollapsed两个滚动Flag,但是不能在细节上不同的元素对此的反应。为此,您可以使用 CollapsingToolbarLayout:

这个设置使用collapsingtoolbarlayout的layout_collapsemode =”pin” 确保在View折叠时,Toolbar本身仍然在屏幕顶部。更好的是,当你同时使用collapsingtoolbarlayout和Toolbar,当布局完全可见时,标题看上去明显变大了;当布局折叠完成后,它恢复到其默认大小。请注意,在这些情况下,你应该调用CollapsingToolbarLayout#settitle() ,而不是调用Toolbar。

example video

如果你希望添加压住特定的视图效果,您可以使用app:layout_collapsemode =”parallax”(和app:layout_collapseparallaxmultiplier =“0.7”(可选,用于设置视差乘数)实现视差滚动(也就是说ImageView,作为Toolbar的兄弟节点,在collapsingtoolbarlayout中)。在这种情况下,建议在CollapsingToolbarLayout中设置 app:contentScrim=”?attr/colorPrimary”这一属性,这样,当视图折叠的时候,就会有蒙上纱布的渐变效果。

example video

CoordinatorLayout与自定义控件

还有一件需要注意的事情,CoordinatorLayout跟FloatingActionButton或AppBarLayout需要一定的配置-它在Coordinator.Behavior提供了一些API,子视图既可以更好地控制触摸事件也可以通过onDependentViewChanged()给别人提供一个回调方法。

Views可以用CoordinatorLayout.DefaultBehavior(YourView.Behavior.class)注解(annotation)声明默认的Behavior,或者在你的布局文件中声明app:layout_behavior=”com.example.app.YourView$Behavior” 属性. 这样做,就可以将任何一个View和CoordinatorLayout整合在一起.

马上使用吧!

Design library现在就可以使用,请确保已经用SDk Manager更新了Android Support Repository. 然后添加一条dependency,你就可以使用Design library了:

需要注意的是,Design library 依赖于Support v4和AppCompat Support Libraries,在你添加 Design library时,这些库也会自动的添加到依赖中。同时,这些控件在Android Studio的Layout Editor (可以在CustomView中找到)中是可用的,你可以便捷的预览一些新的控件。

Design library, AppCompat和所有的Android Support Library 都是开发Android的强有力工具,当你打造一个符合当代风格、好看的应用时,可以使用提供现成的模块,无需从0开始。

[置顶] Android-通过SlidingPaneLayout高仿微信6.2最新版手势滑动返回(一) 最近更新了微信版本到6.2,发现里面有个非常好的体验,就是在第二个页面Activity能手势向右滑动返回,在手势滑动的过程中能看到第一个页面,这种体

Android WebView学习 AndroidWebView学习文章来源:小小懒羊羊个人知识管理库权限:uses-permissionandroid:name=android.permission.INTERNET/在WebView中使用JavaScriptWebViewmyWebView=(WebView)findViewByI

6.9 android相机预览最佳分辨率计算 SwipeRefreshLayout下拉刷新的使用 仿开源中国api包内容的网络访问结构 这几天做一个自定义相机界面,发现相机老是被拉伸,于是自己想了一个自动选择最佳的尺寸,计算要求如下:1.尺寸越大越好,2.宽高比越接近越好标准

标签: Android Design Support Library

本文链接地址:https://www.jiuchutong.com/biancheng/385996.html 转载请保留说明!

上一篇:Android中Adapter中edittext,checkbox记住状态解决方案(android adt)

下一篇:[置顶] Android-通过SlidingPaneLayout高仿微信6.2最新版手势滑动返回(一)([置顶]马粥街残酷史)

  • 年度所得税汇算清缴操作流程
  • 利息可以抵税是什么意思
  • 企业所得税法允许税前扣除的费用划分为
  • 外来原始凭证包括哪些入库单
  • 增值税申报表与财务报表不一致
  • 审计报告报备
  • 以前年度费用调减
  • 发票备注没写
  • 增值税进项税转出文件
  • 注册商标怎么做账
  • 跨年度借款利息的税务处理怎么做?
  • 租赁算投资吗
  • 报销增值税专票绿的
  • 发票冲销后还能用吗
  • 周转材料摊销属于什么费用
  • 已认证已抵扣的发票对方要寄回吗
  • 某大宾馆因工作需要
  • 三十个生僻字
  • 现金折扣应不应计入成本
  • 应交增值税怎么做账务处理
  • 资本公积转增股本会计处理
  • 付款凭证和记账凭证一样吗
  • 包装物报废收回残料
  • 哪些人需缴纳个人所得税
  • 工会经费缴纳是当期
  • 拆迁安置房如何更名
  • 以前年度的其他应付款不用付怎么处理
  • 腾达路由器管理员密码
  • 备用金冲销会计怎么做账
  • 以前年度多计提的附加税怎么调账
  • 本月无生产,有折旧怎么办
  • 收到稳岗补贴计入哪个科目
  • 公司法人名下的车辆算公司的车辆吗
  • 资产负债表怎么看平不平
  • 商业折扣影响税费吗
  • 补提固定资产折旧和汇算清缴有关系吗
  • 新能源企业所得税税率是多少
  • 个人账户存储额是缴费总和
  • 格林湖人
  • 记账软件的作用
  • 兰萨罗特岛的地理位置
  • Yii2使用swiftmailer发送邮件的方法
  • uniapp跳转页面没反应
  • Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
  • 农产品加计扣除1%怎么计算和会计分录
  • 工会经费是应付职工薪酬的借方还是贷方
  • 外购应税消费品的纳税人是谁
  • 用于职工福利的固定资产折旧
  • 酒店成本控制有哪些
  • sql server 2008 安装文件
  • 结算价格的确定原则
  • 以前年度税费减免税
  • 一般纳税人如何申报增值税
  • 代收污水处理费免税
  • 债券分期付息到期还本的意思
  • 盈利赢利营利手机文章
  • 租房发票如何做分录
  • 实发工资高于工资表
  • 会计凭证的审核的注意事项有哪些
  • 怎么做待摊费用
  • 为保证win7安装后能正常使用,安装方法
  • ubuntu 连不上网如何排查原因
  • torch.cuda.set_device
  • 开机后cpu占用高
  • xp系统如何找到bitlocker
  • centos6 centos7区别
  • win7系统怎样修复网络连接
  • 一个简单的防偷技巧
  • 怎么查看u盘有没有传输过数据
  • vuejs单页面
  • jquery validation plugin
  • javascript语法总结
  • python如何自动化
  • 河南城乡居民医疗保险缴费怎么交
  • 划拨土地转让需要交什么税
  • 新公司税务登记完后还需要什么流程
  • 固定资产转让要交企业所得税吗
  • 拼多多发票哪里申请开票
  • 为什么有的企业在企查查上查不到
  • 个人转让住宅需要缴纳什么税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设