属性动画和补间动画的不同是 属性动画移动化的形式改变属性 而补间动画结果并没有改变属性。
首先就是对页面进行布局,下面设置两个按钮 就是补间动画和属性动画进行对比。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<ImageView
android:id="@+id/iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:src="@drawable/ic_launcher"
android:onClick="onClick"
/>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:text="Button1"
android:onClick="onClick01"/>
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_toRightOf="@+id/button1"
android:text="Button2"
android:onClick="onClick02" />
</RelativeLayout>
下面进行代码的编译。
public class MainActivity extends Activity {
private ImageView ivo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ivo=(ImageView)findViewById(R.id.iv);
}
// 点击图片可以鉴别属性改咩改变
public void onClick(View v){
Toast.makeText(this, "hao ", 0).show();
}
//这个方法是点击按钮时补间动画平移的实现方式
public void onClick01(View v){
TranslateAnimation ta =new TranslateAnimation(0, -200, 0, 0);
// 0 -200 表示 沿x轴方向 从0 移动到-200
// 0,0 表示沿y轴方向从0 移动到0
ta.setDuration(3000);
ta.setFillAfter(true);
ivo.startAnimation(ta);
}
//这个方法是点击按钮时属性动画平移的实现方式
public void onClick02(View v){
// ivo 是你设置的动画对象
// translationX 是属性 就是沿着x轴方向
// 0 , 200 是平移的距离
// setDuration(3000) 持续时间 3000 为3秒
ObjectAnimator.ofFloat(ivo,"translationX", 0,-200).setDuration(3000).start();
}
由于补间动画存在一定的不足,所以有时候有些效果只能用属性动画来实现。