相信对于Android初学者,对于Android中的动画效果一定很感兴趣,今天为大家总结一下刚刚学到的属性动画案例。

  首先和一般的Android应用一样,我们先建一个工程,为了方便,我们的布局文件中就只添加一个ImageView和button按钮,代码如下:

<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" android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">    <ImageView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/imageView"        android:layout_alignParentTop="true"        android:layout_alignParentLeft="true"        android:layout_alignParentStart="true"        android:src="@drawable/ic_launcher"        android:onClick="imgClick"/>    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="动画"        android:id="@+id/button"        android:layout_alignParentBottom="true"        android:layout_centerHorizontal="true"        android:layout_marginBottom="86dp"        android:onClick="buttonClick"/></RelativeLayout>

  下面是我们action,为了便于大家学习,我将代码分享如下:

public class MainActivity extends Activity {    public ImageView imageView;    public Button button;    static int x = 0, xx = 0, y = 0, yy = 0;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        imageView = (ImageView)findViewById(R.id.imageView);        button = (Button)findViewById(R.id.button);    }    public void imgClick(View view){        Toast.makeText(this, "ImageView", Toast.LENGTH_SHORT).show();    }    public void buttonClick(View view){//         xx += 20;//         TranslateAnimation ta = new TranslateAnimation(x, xx, y, yy);//设置动画的偏移位移//         x += 20;//        ta.setDuration(1000);//设置动画的时长//        ta.setFillAfter(true);//设置动画结束后停留在该位置//        imageView.startAnimation(ta);        //属性动画调用start()方法后是一个异步操作//        ObjectAnimator.ofFloat(imageView, "translationX", 0F, 360F).setDuration(1000).start();//X轴平移旋转//        ObjectAnimator.ofFloat(imageView, "translationY", 0F, 360F).setDuration(1000).start();//Y轴平移旋转//        ObjectAnimator.ofFloat(imageView, "rotation", 0F, 360F).setDuration(1000).start();//360度旋转        //同步动画设计//        PropertyValuesHolder p1 = PropertyValuesHolder.ofFloat("translationX", 0, 360F);//        PropertyValuesHolder p2 = PropertyValuesHolder.ofFloat("translationY", 0, 360F);//        PropertyValuesHolder p3 = PropertyValuesHolder.ofFloat("rotation", 0, 360F);//        ObjectAnimator.ofPropertyValuesHolder(imageView, p1, p2 ,p3).setDuration(1000).start();        //通过AnimatiorSet来设计同步执行的多个属性动画        ObjectAnimator animator1 = ObjectAnimator.ofFloat(imageView, "translationX", 0F, 360F);//X轴平移旋转        ObjectAnimator animator2 = ObjectAnimator.ofFloat(imageView, "translationY", 0F, 360F);//Y轴平移旋转        ObjectAnimator animator3 = ObjectAnimator.ofFloat(imageView, "rotation", 0F, 360F);//360度旋转        AnimatorSet set = new AnimatorSet();        //set.playSequentially(animator1, animator2, animator3);//分步执行        //set.playTogether(animator1, animator2, animator3);//同步执行        //属性动画的执行顺序控制        // 先同步执行动画animator2和animator3,然后再执行animator1        set.play(animator3).with(animator1);        set.play(animator2).after(animator3);        set.setDuration(1000);        set.start();    }}

  对于关键位置,我已经进行了详细的注释,大家可以拷贝到自己的项目中进行测试,相信大家一定可以掌握Android中的属性动画的知识。

更多相关文章

  1. Android属性动画ObjectAnimator源码简单分析
  2. Android的View动画
  3. android api Demo之自定义Animation,实现3D旋转效果
  4. Android(安卓)Animation动画 控制动画的执行效果,速度等
  5. Android属性动画-Property Animation(三) 使用ValueAnimator完成
  6. Android属性动画ObjectAnimator源码简单分析
  7. 很实用的android压缩图片的算法
  8. android UI进阶之弹窗的使用(2)--实现通讯录的弹窗效果
  9. android三种动画详解

随机推荐

  1. Android(安卓)View框架总结(九)KeyEvent事
  2. android 高仿多米音乐播放器 (有图有码有
  3. Android: SDCard容量计算
  4. Android日期选择器
  5. Android打Apk包发版?你真的准备好了吗?
  6. android sensor驱动移植
  7. Android消息提示框
  8. Android(安卓)BaseRecyclerViewAdapterHe
  9. Gradle学习-----Gradle自定义插件
  10. 【Android】原生安装和卸载应用