本篇博客依然是对于属性动画的练习,需求如下:
2.开始编写逻辑代码。
然后就可以实现要求当中所示的动画效果了!不信,你可以试试~~
使用图片完成要求:距离屏幕底部一定的位置开始向屏幕底部垂直移动,达到底部后弹回到原高度一半的位置,每次移动耗时2s,且每次移动先加速又减速,如此重复3次。
效果图如下:
分析如何实现上述的效果呢?
分析步骤如下:其实就是模拟弹力球的过程
1.分析就是关于一个控件在y轴上移动的过程
2.300 0 150 0 75 0
3.一共弹起3次,每次2s,一共是6s
4.属性动画可以写1个,也可以写3个
分析发现,只需要写一个属性动画即可,在这个属性动画当中针对于y轴的位置进行设置改变。因为是3次弹起落下,
所以传入3组数据,也就是6个数据,然后每次要求2秒,共6秒
开始编写代码:
1.绘制布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/btn_ap"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="移动阿飘"
android:onClick="onClick"
android:layout_centerHorizontal="true"/>
<ImageView
android:id="@+id/img_ap"
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@mipmap/apiao"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
android:layout_marginBottom="300dp"/>
</RelativeLayout>
2.开始编写逻辑代码。
public class PropertyTest02 extends AppCompatActivity {
private ImageView apImg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_property_test02);
apImg = (ImageView) findViewById(R.id.img_ap);
}
// 开启动画
private void startAnimator() {
ObjectAnimator apAnimator = ObjectAnimator.ofFloat(apImg, "translationY", 0, 900, 300, 900, 700, 900);
apAnimator.setDuration(6000);
apAnimator.setInterpolator(new AccelerateDecelerateInterpolator()); //设置插值器
apAnimator.start();
}
public void onClick(View view) {
startAnimator();
}
}
然后就可以实现要求当中所示的动画效果了!不信,你可以试试~~