View展开隐藏动画
来源:互联网 发布:安兔兔网络连接失败 编辑:程序博客网 时间:2024/06/07 06:26
引用的布局
import com.slidingmenu.R;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.ImageView;import android.widget.LinearLayout;public class ExpandableLayout extends LinearLayout {private Context mContext;private LinearLayout mHandleView;private LinearLayout mContentView;private ImageView mIconExpand;int mContentHeight = 0;int mTitleHeight = 0;private boolean isExpand;private Animation animationDown;private Animation animationUp;public ExpandableLayout(Context context, AttributeSet attrs) {super(context, attrs);this.mContext = context;}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {if (this.mContentHeight == 0) {this.mContentView.measure(widthMeasureSpec, 0);this.mContentHeight = this.mContentView.getMeasuredHeight();}if (this.mTitleHeight == 0) {this.mHandleView.measure(widthMeasureSpec, 0);this.mTitleHeight = this.mHandleView.getMeasuredHeight();}super.onMeasure(widthMeasureSpec, heightMeasureSpec);}@Overrideprotected void onFinishInflate() {super.onFinishInflate();this.mHandleView = (LinearLayout) this.findViewById(R.id.ll);//点击展开的父类布局this.mContentView = (LinearLayout) this.findViewById(R.id.ll_menu);//要展开的布局this.mIconExpand = (ImageView) this.findViewById(R.id.image);//图片this.mHandleView.setOnClickListener(new ExpandListener());//展开、隐藏监听//this.mContentView.setOnClickListener(new ExpandListener());mContentView.setVisibility(View.GONE);}private class ExpandListener implements View.OnClickListener {@Overridepublic final void onClick(View paramView) {//clearAnimation是view的方法clearAnimation();if (!isExpand) {if (animationDown == null) {animationDown = new DropDownAnim(mContentView,mContentHeight, true);animationDown.setDuration(200); // SUPPRESS CHECKSTYLE}startAnimation(animationDown);mContentView.startAnimation(AnimationUtils.loadAnimation(mContext, R.anim.animalpha));mIconExpand.setImageResource(R.drawable.update_detail_up);isExpand = true;} else {isExpand = false;if (animationUp == null) {animationUp = new DropDownAnim(mContentView,mContentHeight, false);animationUp.setDuration(200); // SUPPRESS CHECKSTYLE}startAnimation(animationUp);mIconExpand.setImageResource(R.drawable.update_detail_down);}}}class DropDownAnim extends Animation {/** 目标的高度 */private int targetHeight;/** 目标view */private View view;/** 是否向下展开 */private boolean down;/** * 构造方法 * * @param targetview * 需要被展现的view * @param vieweight * 目的高 * @param isdown * true:向下展开,false:收起 */public DropDownAnim(View targetview, int vieweight, boolean isdown) {this.view = targetview;this.targetHeight = vieweight;this.down = isdown;}//down的时候,interpolatedTime从0增长到1,这样newHeight也从0增长到targetHeight@Overrideprotected void applyTransformation(float interpolatedTime,Transformation t) {int newHeight;if (down) {newHeight = (int) (targetHeight * interpolatedTime);} else {newHeight = (int) (targetHeight * (1 - interpolatedTime));}view.getLayoutParams().height = newHeight;view.requestLayout();if (view.getVisibility() == View.GONE) {view.setVisibility(View.VISIBLE);}}@Overridepublic void initialize(int width, int height, int parentWidth,int parentHeight) {super.initialize(width, height, parentWidth, parentHeight);}@Overridepublic boolean willChangeBounds() {return true;}}}
布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="10dp" android:orientation="vertical" > <view.ExpandableLayout android:id="@+id/app_detail_safety_info" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:id="@+id/ll" > <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="19sp" android:text="展开隐藏布局" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/image" android:src="@drawable/update_detail_down" /> </LinearLayout> <LinearLayout android:id="@+id/ll_menu" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="10dp" android:visibility="gone" > <TextView android:id="@+id/tv1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="19sp" android:text="菜单1" /> <TextView android:id="@+id/tv2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="19sp" android:text="菜单2" /> </LinearLayout> </view.ExpandableLayout> <TextView android:id="@+id/tv3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="19sp" android:text="布局1" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="19sp" android:text="布局2" /> </LinearLayout>展开、隐藏动画文件R.anim.animalpha
<alpha xmlns:android="http://schemas.android.com/apk/res/android" android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="500"/>
最后显示隐藏布局的id不可重复监听,否则显示监听会无效
0 0
- View展开隐藏动画
- 如果写一个点击view带动画的下滑展开显示隐藏内容的控件
- 如何写一个点击view带动画的下滑展开显示隐藏内容的控件
- 点击或滑动view带动画的下滑展开显示隐藏内容的控件
- 点击ListView的item展开隐藏的view
- 以动画的方式实现View的展开和缩放
- Android自定义可动画展开收缩View的实现
- 自定义可动画展开收缩View的实现
- IOS为view的隐藏添加动画
- 为view的隐藏添加动画
- [Android] View控件显示隐藏动画效果
- 【android】 Android 动画cancle后 view隐藏
- View的显示和隐藏动画
- IOS为view的隐藏添加动画
- view出现隐藏的动画效果
- Android实现View隐藏显示渐变动画
- View进行动画之后无法设置隐藏
- Android View动画显示和隐藏(支持所有View)
- 用户需求说明书 与 需求规格说明书 有什么本质区别?
- 关闭eclipse或MyEclipse的单词检查
- HDU-2263 过山车(二分图最大匹配)
- codeforces_677D. Vanya and Treasure(BFS+DP)
- java.lang.UnsupportedClassVersionError: Unsupported major.minor version 52.0
- View展开隐藏动画
- DSP、Actel转接板标准电路
- 数据库中的分页问题
- android 布局
- C#的DateTime得到特定日期
- condition update在分布式系统中设计
- POST请求报错:Error Domain=NSCocoaErrorDomain Code=3840 "No string key for value in object around charact
- ubuntu 下安装redis2.8.17
- React Native入门教程2 -- 基本组件使用及样式