需求:自定义一个控件,包含的子控件中有一个视图需要点击或滑动的时候平缓的显示或隐藏。
实现:我们只需要使该视图是跟随动画平缓的显示和隐藏,就不会出现不衔接的现象,所以,我们只需要在onMeasure中得到隐藏内容的高度,然后点击这个view的时候对隐藏的view startAnimation,让它的高度从0增长到onMeasure得到的这个View的measureHeight
使用:在布局中使用该类为父控件包住子视图,然后在代码中找到这个控件,然后通过控件中的show(fase)方法控制视图的隐藏和显示即可。需要注意的是:子视图中需要隐藏和显示的视图的id必须为ll_fs,你也可以修改为其他,但是必须是跟父控件中findviewByID是一致即可。
附上一张,我在项目中使用的效果图。
父控件的完整代码如下:
package com.eno.common.views;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.Transformation;
import android.widget.LinearLayout;
import com.eno.xyzq.page.R;
public class MyAnimationExpandableLayout extends LinearLayout {
private Context mContext;
private LinearLayout mContentView;
int mContentHeight = 0;
private boolean isExpand;//判断是否已经展开
private Animation animationDown;//下拉显示动画
private Animation animationUp;//上拉显示动画
public