MainActivity如下:
package wy.test; import android.animation.AnimatorInflater; import android.animation.LayoutTransition; import android.animation.ObjectAnimator; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; /** * Demo描述: * 布局变化时动画效果的现实(二) * 当布局发生变化时展示一个动画,不至于切换效果太生硬. * 当然类似的还可以设置布局变化的不同时刻的动画,一共有四种: * LayoutTransition.APPEARING,LayoutTransition.CHANGE_APPEARING, * LayoutTransition.CHANGE_DISAPPEARING,LayoutTransition.DISAPPEARING * * * 参考资料: * 1 http://blog.csdn.net/alrdy/article/details/7836963 * 2 http://www.cnblogs.com/mengdd/p/3305973.html * 3 http://blog.csdn.net/think_soft/article/details/12417107 * * Thank you very much */ public class TestAnimateLayoutChangesActivity extends Activity { private LinearLayout mRootLinearLayout; private Context mContext; private TextView mTextView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); init(); } private void init(){ mContext=this; mRootLinearLayout=(LinearLayout) findViewById(R.id.rootLinearLayout); mTextView=(TextView) findViewById(R.id.textView); mTextView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Button addedButton=new Button(mContext); addedButton.setText("Button"); //属性动画ObjectAnimator ObjectAnimator objectAnimator=(ObjectAnimator)AnimatorInflater.loadAnimator(mContext, R.animator.scalexanimator); objectAnimator.setTarget(addedButton); LayoutTransition layoutTransition=new LayoutTransition(); //指定为新加View出现时展示动画 layoutTransition.setAnimator(LayoutTransition.APPEARING, objectAnimator); //为布局添加LayoutTransition mRootLinearLayout.setLayoutTransition(layoutTransition); mRootLinearLayout.addView(addedButton); } }); } }
main.xml如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rootLinearLayout" android:layout_width="wrap_content" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/textView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="测试布局中的animateLayoutChanges属性\n注意测试环境为Android4.0" /> </LinearLayout>
scalexanimator.xml如下:
<?xml version="1.0" encoding="utf-8"?> <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" android:propertyName="scaleX" android:duration="3000" android:valueFrom="1.0" android:valueTo="0.5" > </objectAnimator>