Android中 Layout 与 Behaviors 初探.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Android中 Layout 与 Behaviors 初探

Android Support Design 中 CoordinatorLayout 与 Behaviors 初探在Android M Preview发布后,我们获得了一个新的support library —— Android Design Support Library 用来实现Google的Material Design 提供了一系列符合设计标准的控件。其中有众多的控件,其中最复杂,功能最强大的就是CoordinatorLayout,顾名思义,它是用来组织它的子views之间协作的一个父view。CoordinatorLayout默认情况下可理解是一个FrameLayout,它的布局方式默认是一层一层叠上去。那么,CoordinatorLayout的神奇之处就在于Behavior对象了。看下CoordinatorLayout.Behavior对象的 OverviewInteraction?behavior?plugin?for?child?views?of?CoordinatorLayout.???Behavior?implements?one?or?more?interactions?that?a?user?can?take?on?a?child?view.?These?interactions?may?include?drags,?swipes,?flings,?or?any?other?gestures.?可知Behavior对象是用来给CoordinatorLayout的子view们进行交互用的。Behavior接口拥有很多个方法,我们拿AppBarLayout为例。AppBarLayout中有两个Behavior,一个是拿来给它自己用的,另一个是拿来给它的兄弟结点用的,我们重点关注下AppBarLayout.ScrollingViewBehavior这个类。我们看下这个类中的以下方法0. dependencypublic?boolean?layoutDependsOn(CoordinatorLayout?parent,?View?child,?View?dependency)?{?return?dependency?instanceof?AppBarLayout;?}?这个方法告诉CoordinatorLayout,这个view是依赖AppBarLayout的,后续父亲可以利用这个方法,查找到这个child所有依赖的兄弟结点。1. measure public?boolean?onMeasureChild(CoordinatorLayout?parent,?View?child,?int?parentWidthMeasureSpec,?int?widthUsed,?int?parentHeightMeasureSpec,?int?heightUsed)?这个是CoordinatorLayout在进行measure的过程中,利用Behavior对象对子view进行大小测量的一个方法。在这个方法内,我们可以通过parent.getDependencies(child);这个方法,获取到这个child依赖的view,然后通过获取这个child依赖的view的大小来决定自身的大小。2. layout public?boolean?onLayoutChild(CoordinatorLayout?parent,?View?child,?int?layoutDirection)?这个方法是用来子view用来布局自身使用,如果依赖其他view,那么系统会首先调用public booleanonDependentViewChanged(CoordinatorLayout parent, View child, View dependency)这个方法,可以在这个回调中记录dependency的一些位置信息,在onLayoutChild中利用保存下来的信息进行计算,然后得到自身的具体位置。3. nested scroll ?public?boolean?onStartNestedScroll(CoordinatorLayout?coordinatorLayout,?AppBarLayout?child,?View?directTargetChild,?View?target,?int?nestedScrollAxes)??public?void?onNestedPreScroll(CoordinatorLayout?coordinatorLayout,?AppBarLayout?child,?View?target,?int?dx,?int?dy,?int[]?consumed)??public?void?onNestedScro

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档