android 折叠式布局,Android开发实战之拥有Material Design风格的折叠布局

关于折叠布局,也许你并不陌生,最新版的陌陌,或者一些其他的社交APP都有一个折叠布局。折叠布局,让我们的APP更加具有交互性,同时也更加美观,先来展示一下效果图:

850b4ecf6fa7ed087313244a97378426.gif

这是我个人做的一个APP主界面,可以看到,在滑动的时候,大标题随着拉动变为小标题,同时移动位置,并且有一张图片,随滑动淡出屏幕。如果你了解过Material Design,那么这个看似复杂的效果就很容易实现,都是用到这个desigon依赖库中的组件属性而完成的.

首先加入依赖库:

compile ‘com.android.support:design:23.3.0‘compile‘com.android.support:recyclerview-v7:23.3.0‘

最好也要把recyclerview的依赖添加一下,不要问我为什么,经验之谈。

然后是布局:

android:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/cdl_content"xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"

>

android:layout_width="match_parent"android:layout_height="200dp"android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

android:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/ctl_title"app:layout_scrollFlags="scroll|exitUntilCollapsed"app:contentScrim="?attr/colorPrimary">

android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/titile_bg2"app:layout_collapseMode="parallax"app:layout_collapseParallaxMultiplier="0.7"

/>

android:layout_width="match_parent"android:layout_height="?attr/actionBarSize"android:id="@+id/tl_title"app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"app:popupTheme="@style/ThemeOverlay.AppCompat.Light"app:layout_collapseMode="pin"

>

android:layout_width="match_parent"android:layout_height="match_parent"app:layout_behavior="@string/appbar_scrolling_view_behavior"

>

android:layout_marginTop="20dp"android:layout_marginLeft="10dp"android:layout_marginRight="10dp"android:layout_width="match_parent"android:layout_height="match_parent"android:numColumns="3"android:cacheColorHint="#00000000"android:gravity="center_vertical"android:horizontalSpacing="10dp"android:verticalSpacing="10dp"android:id="@+id/gv_menu">

接着是逻辑代码:

setSupportActionBar(toolBarTitle);

ctl_title.setCollapsedTitleGravity(Gravity.CENTER);

ctl_title.setExpandedTitleGravity(Gravity.CENTER);

ctl_title.setTitle("手机安全卫士");

ctl_title.setExpandedTitleColor(Color.WHITE);

ctl_title.setCollapsedTitleTextColor(Color.WHITE);

谷歌在5.0之后就推荐使用toolbar代替actionbar,toolbar更具拓展性。这个依赖库一个很重要的控件是:CoordinatorLayout,协调布局。这是一个将这些布局联动起来的重要布局。接下来

再说说折叠布局:CollapsingToolbarLayout,它的:Expanded拉出,Collapsed关上,可以设置一些相关属性。最重要的是设置:app:layout_scrollFlags="scroll|exitUntilCollapsed"这样它才能随滑动而滚动。在toolbar中设置:app:layout_collapseMode="pin",使它不随滑动而退出屏幕。在AppbarLayout中设置显示折叠的高度。还可以在包裹的ImageView中设置

滑动联动效果:app:layout_collapseMode="parallax"app:layout_collapseParallaxMultiplier="0.7"。其实,实现也不是特别的复杂,只要理解了这几个新空间的用途,很容易就可以做到自己想要的酷炫效果。好了,如果你有什么疑问欢迎下方留言交流。希望对你有所帮助。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YCExpandView01.该库介绍02.效果展示03.如何使用04.注意要点05.优化问题06.部分代码逻辑01.该库介绍自定义折叠和展开布局,在不用改变原控件的基础上,就可以实现折叠展开功能,入侵性极低。主要的思路是,设置一个折叠时的布局高度,设置一个内容展开时的高度,然后利用属性动画去动态改变布局的高度。可以设置折叠和展开的监听事件,方便开发者拓展其他需求。可以设置动画的时间。可以支持支持常见的文本折叠,流失布局标签折叠,或者RecyclerView折叠等功能。十分方便,思路也比较容易理解,代码不超过300行……02.效果展示03.如何使用设置文本控件      如何切换展开和折叠//初始化操作 expand.initExpand(false ,mHeight); //设置动画时间 expand.setAnimationDuration(300); //折叠或者展开操作后的监听 expand.setOnToggleExpandListener(new ExpandLayout.OnToggleExpandListener() {     @Override     public void onToggleExpand(boolean isExpand) {         if (isExpand){             ivExpand.setBackgroundResource(R.mipmap.icon_btn_collapse);         }else {             ivExpand.setBackgroundResource(R.mipmap.icon_btn_expand);         }     } }); //折叠view expand.collapse(); //展开view expand.expand(); //查看控件是折叠还是展开状态 expand.isExpand(); //这个是置反操作 expand.toggleExpand();04.注意要点05.优化问题1.在从折叠状态到伸展状态,或者反之。只要是在动画过程中,则执行动画的过程中屏蔽事件传递2.当控件销毁后,在onDetachedFromWindow方法中,手动销毁动画3.针对折叠和伸展状态之间切换,如果动画在执行中,即使调用多次toggleExpand()方法,避免频繁调用collapse或者expand4.如果开发者使用该折叠控件时,设置折叠时的高度为0,则会抛出异常

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值