位置: 编程技术 - 正文

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最新版手势滑动返回(一)([置顶]马粥街残酷史)

  • 纳税调整项目包括哪些?请简单列举
  • 发票在系统里作用大吗
  • 购买地瓜
  • 在业跟续存有什么不一样
  • 建筑企业应交哪几种税
  • 购土地契税怎么算
  • 办理企业所得税退税
  • 政府搬迁补偿款记资本公积
  • 个税专项扣除需要提供哪些依据
  • 收到补价时应确认收益,支付补价时不能确认收益
  • 账务核对有账表核对吗
  • 银行支付结算工作内容
  • 生产成本 营业成本 营业费用
  • 出售房产税收
  • 增值税普通发票对方作废了怎么办?
  • 开普通发票现金走账怎样处理?
  • 普通发票查不到信息怎么办
  • 给员工的福利要缴税吗
  • 发票请求流水号不能为空
  • 金税盘密码忘记了打客服有用吗?
  • 现金采购合理吗
  • 公司购买办公用品300元,以现金支付,购入后即被领用
  • 红冲的普通发票要给对方吗
  • 出口报关单中有哪些内容
  • 跨年度所得税多怎么办
  • 政府补助不征税条件
  • u盘装系统系统放哪里
  • 鸿蒙系统快捷键
  • 还款本息和本金哪个划算
  • 计提本月所得税费会计分录
  • 总公司拨给分公司款需要交税吗
  • 分期付款购买固定资产折现率怎么算
  • php中session使用
  • 企业获得境外咨询费
  • elementui ts
  • php根据经纬度计算距离
  • 提取备用金记账凭证图片
  • axios是干嘛的
  • python爬虫案例题目
  • 应收账款周转率下降说明什么
  • 银行承兑汇票贴现分录
  • 所得税费用为什么不计入营业利润
  • 土方工程合同签了一般多久开工
  • 个人发票抬头怎么弄
  • 线程池中的一个线程执行完一个任务后
  • 织梦网站老是被挂马
  • 织梦怎么改首页背景
  • 什么是债权人和债务人简单来说
  • 应付职工薪酬在利润表哪里体现
  • 支付宝收付款如何截图
  • 固定资产补入账和补提折旧
  • 固定成本和变动成本举例
  • 先预付货款,货到了怎么做账
  • 小轿车折旧年限规定
  • 施工企业的成本核算
  • 向非关联企业捐赠现金会计分录
  • 零售行业折扣销售方案
  • 投入的资金如何做账
  • 从事小额零星经营业务的个人,其支出
  • 发票作废后对方还能认证吗
  • mysql ERROR 1044 (42000): Access denied for user ''@'localhost' to database
  • win2000安全模式怎么进
  • win8创建新用户
  • win10mobile还能用吗
  • unix系统常用命令大全
  • cocos2dx游戏案例
  • android源码分析实录
  • 浅谈python要进行房价预测的优点和缺点
  • unity账号登录
  • javascript语法术语
  • android ichart ColumnStacked2D图表无法显示解决方案
  • unity 5.4
  • js加载3d模型
  • js使用正则表达式对json对象的校验
  • 表单验证jquery
  • 国家税务总局2012年20号公告
  • 民办幼儿园属于民营企业吗
  • 南京电费余额查询
  • 国税局内设机构
  • 电子税务局开电子发票如何更换开票人
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设