带过渡动画的折叠收缩布局ExpandLayout
来源:互联网 发布:金陵科技学院网络课 编辑:程序博客网 时间:2024/05/08 12:10
ExpandLayout
简介
由于界面View.VISIBLE和View.GONE的动画太生硬,所以写了ExpandLayout类来平滑过渡。
基本思路,动态的设置布局的高度。
- 核心动画效果代码
/** * 切换动画实现 */ private void animateToggle(long animationDuration) { ValueAnimator heightAnimation = isExpand ? ValueAnimator.ofFloat(0f, viewHeight) : ValueAnimator.ofFloat(viewHeight, 0f); heightAnimation.setDuration(animationDuration / 2); heightAnimation.setStartDelay(animationDuration / 2); heightAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { float val = (float) animation.getAnimatedValue(); setViewHeight(layoutView, (int) val); } }); heightAnimation.start(); }
效果预览
使用
因为ExpandLayout继承RelativeLayout,所以可以在布局内直接包含控件
- 布局文件中
<com.seselin.View.ExpandLayout android:id="@+id/expandLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#FFFF00" android:clickable="true"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:padding="15dp" android:text="这里是可收缩布局内部" /> </com.seselin.View.ExpandLayout>
- java代码中
初始状态是否显示,toggleExpand切换折叠/展开状态
private ExpandLayout mExpandLayout; public void initExpandView() { mExpandLayout = (ExpandLayout) findViewById(R.id.expandLayout); mExpandLayout.initExpand(false);//设定初始化折叠,默认展开 button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mExpandLayout.toggleExpand(); } }); }
项目地址
1 0
- 带过渡动画的折叠收缩布局ExpandLayout
- 布局展开收缩的动画
- QQ列表的收缩展开,带动画效果
- ViewPager的过渡动画
- Activity过渡的动画
- Activity的过渡动画
- 过渡动画的使用
- 动态添加布局增添动画过渡效果
- Android动画框架(三)----布局动画&Activity过渡动画
- Android动画框架(三)----布局动画&Activity过渡动画
- Android动画框架(三)----布局动画&Activity过渡动画
- 动画 简单的放大收缩
- jQuery和CSS3全屏带过渡动画效果的模态窗口插件
- iphone里的动画过渡
- CSS3的过渡、动画、转换
- iOS 过渡动画的实现
- 细说vue的过渡动画
- CSS3的过渡和动画
- 通过一些活动彻底的放空自己,之后重新投入到工作中会发现想法和思路都开阔了,这次参加辰辰运动会就这样的感受
- android 7.0 (nougat)的编译优化-ninja
- C/Golang中的值传递和指针传递
- java日志文件log4j.properties配置详解
- 判断一个数的阶乘的末尾有几个0
- 带过渡动画的折叠收缩布局ExpandLayout
- 使用DOM创建XML
- AsyncTask源码解析
- 用标准C++实现信号与槽机制
- 1.1、Dcoker-1.12 前言[一]
- cocos2d-x--->捕鱼达人
- $(...).niceScroll is not a function; $... is not a function
- 开发地址哈希
- 黑马程序员C/C++知识竞赛,争做IT界最强大脑!