MainAc
import android.animation.ValueAnimator; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import android.widget.ViewAnimator; /** * Created by YRC on 2017/10/28. */ public class ClickAddView extends AppCompatActivity { TextView visibleView,unVisibleView; private int unVisibleViewHeight; private boolean mFlag=true; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.click_add_view); visibleView= (TextView) findViewById(R.id.visibleView); unVisibleView= (TextView) findViewById(R.id.unVisibleView); float mDensity = getResources().getDisplayMetrics().density; unVisibleViewHeight= (int) (mDensity *40+0.5); visibleView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mFlag){ showView(unVisibleView); mFlag=false; }else { closeView(unVisibleView); mFlag=true; } } }); } private void closeView(final View view) { int height=view.getHeight(); ValueAnimator valueAnimator=createDropAnimator(view,height,0); valueAnimator.start(); } private void showView(final View view) { unVisibleView.setVisibility(View.VISIBLE); ValueAnimator valueAnimator=createDropAnimator(view, 0, unVisibleViewHeight); valueAnimator.start(); } private ValueAnimator createDropAnimator(final View view , int start,int end){ ValueAnimator valueAnimator=ValueAnimator.ofInt(start,end); valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { int value= (Integer) animation.getAnimatedValue(); ViewGroup.LayoutParams layoutParams=view.getLayoutParams(); layoutParams.height=value; view.setLayoutParams(layoutParams); } }); return (valueAnimator); } }xml
<LinearLayout 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="match_parent" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="hahahahahaha" android:gravity="center_vertical" android:background="#00CD00" android:drawableLeft="@mipmap/ic_launcher" android:drawableStart="@mipmap/ic_launcher" android:id="@+id/visibleView"/> <TextView android:layout_width="wrap_content" android:layout_height="40dp" android:text="xixixixixix" android:gravity="center" android:background="#00FFFF" android:drawableLeft="@mipmap/ic_launcher" android:drawableStart="@mipmap/ic_launcher" android:visibility="gone" android:id="@+id/unVisibleView"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#A1A1A1" android:text="nenenenenenenenene"/> </LinearLayout>