分享一个Android Expand Collapse的动画
来源:互联网 发布:psp值得玩的游戏知乎 编辑:程序博客网 时间:2024/05/22 10:38
通过Animation实现:
public class ExpandCollapseAnimation extends Animation {private View mAnimatedView;private int mEndHeight;private int mType;public final static int COLLAPSE = 1;public final static int EXPAND = 0;private LinearLayout.LayoutParams mLayoutParams;/** * Initializes expand collapse animation, has two types, collapse (1) and expand (0). * @param view The view to animate * @param type The type of animation: 0 will expand from gone and 0 size to visible and layout size defined in xml. * 1 will collapse view and set to gone */public ExpandCollapseAnimation(View view, int type) {mAnimatedView = view;mEndHeight = mAnimatedView.getMeasuredHeight();mLayoutParams = ((LinearLayout.LayoutParams) view.getLayoutParams());mType = type;if(mType == EXPAND) {mLayoutParams.bottomMargin = -mEndHeight;} else {mLayoutParams.bottomMargin = 0;}view.setVisibility(View.VISIBLE);}@Overrideprotected void applyTransformation(float interpolatedTime, Transformation t) {super.applyTransformation(interpolatedTime, t);if (interpolatedTime < 1.0f) {if(mType == EXPAND) {mLayoutParams.bottomMargin = -mEndHeight + (int) (mEndHeight * interpolatedTime);} else {mLayoutParams.bottomMargin = - (int) (mEndHeight * interpolatedTime);}Log.d("ExpandCollapseAnimation", "anim height " + mLayoutParams.bottomMargin);mAnimatedView.requestLayout();} else {if(mType == EXPAND) {mLayoutParams.bottomMargin = 0;mAnimatedView.requestLayout();} else {mLayoutParams.bottomMargin = -mEndHeight;mAnimatedView.setVisibility(View.GONE);mAnimatedView.requestLayout();}}}}
第一种方式详细请看:https://github.com/tjerkw/Android-SlideExpandableListView
第二种方式是自己通过Animator实现也行:
public class ExpandCollapseAnimation {public static ValueAnimator ExpandAnimation(final View view, int start,final int end) {ValueAnimator animator = ValueAnimator.ofInt(start, end);animator.addUpdateListener(new AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(ValueAnimator arg0) {// TODO Auto-generated method stub//通过更改height也可以,但是有些os不行,还不知道什么原因LinearLayout.LayoutParams params = (LayoutParams) view.getLayoutParams();params.bottomMargin = (int) arg0.getAnimatedValue() - end;view.requestLayout();}});animator.addListener(new AnimatorListener() {@Overridepublic void onAnimationStart(Animator arg0) {// TODO Auto-generated method stubview.setVisibility(View.VISIBLE);}@Overridepublic void onAnimationRepeat(Animator arg0) {// TODO Auto-generated method stub}@Overridepublic void onAnimationEnd(Animator arg0) {// TODO Auto-generated method stub}@Overridepublic void onAnimationCancel(Animator arg0) {// TODO Auto-generated method stub}});return animator;}public static ValueAnimator CollapseAnimation(final View view, final int start,int end) {ValueAnimator animator = ValueAnimator.ofInt(start, end);animator.addUpdateListener(new AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(ValueAnimator arg0) {// TODO Auto-generated method stubLinearLayout.LayoutParams params = (LayoutParams) view.getLayoutParams();params.bottomMargin = (int) arg0.getAnimatedValue() - start;view.requestLayout();}});animator.addListener(new AnimatorListener() {@Overridepublic void onAnimationStart(Animator arg0) {// TODO Auto-generated method stub}@Overridepublic void onAnimationRepeat(Animator arg0) {// TODO Auto-generated method stub}@Overridepublic void onAnimationEnd(Animator arg0) {// TODO Auto-generated method stubview.setVisibility(View.GONE);}@Overridepublic void onAnimationCancel(Animator arg0) {// TODO Auto-generated method stub}});return animator;}}
0 0
- 分享一个Android Expand Collapse的动画
- fieldset的collapse和expand事件
- treegrid expand and collapse
- 让Yui-tree有ext一样的expand和collapse的animation
- SAP 选择屏幕的收起与展开(Collapse and Expand)
- 使用jquery mobile Collapsible Widget 时绑定expand,collapse事件监听器的方法
- Android 分享一个简单有趣的动画效果
- Expand and Collapse Rows on Client-Side
- Add Expand/Collapse in the report
- 一个动画效果很棒的分享按钮。
- Client Side Expand/Collapse All Nodes For ASP.NET 2.0
- Axure RP Pro - Master主控文档 - Expand.Collapse伸缩控件
- border-collapse:collapse 的使用
- 分享一个android仿ios桌面卸载的图标抖动动画
- Android开发:带动画的分享效果
- 一个属性解决Table的边框问题(border-collapse )
- 一次偶然机遇找到一个不错的关于Android实现加载gif动画的实例,写一下分享个大家。
- 分享一个Javascript的keyframe动画类库 - Rekapi
- ubuntu下MySQL数据库中文乱码问题解决
- c#操作json
- SEO实战:目标用户组排名技巧
- Yii2优雅的Active Record
- 冒泡排序
- 分享一个Android Expand Collapse的动画
- Android ListView使用BaseAdapter与ListView的优化
- JAX-RS规范-常用注解浅析
- 链栈
- select into from 和 insert into select 的用法和区别
- 最新的IOS在windows环境下编译环境搭建记录
- UVa 253 Cube painting(骰子涂色)
- jQuery实战笔记(一)-jQuery基本原理
- 再谈大可乐3:众筹昭示未来可期