• Android属性动画之ObjectAnimator


      相信对于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中的属性动画的知识。

  • 相关阅读:
    制作USB系统盘
    01Mysql 配置方法
    Tec_010_怎样看K线图
    回顾5年内的央行加息历史
    推荐:微软下一代操作系统Windows 7版本详解
    关于USB启动盘制作
    Delphi Program test
    圣诞节 玩具
    敏捷宣言
    [转 TDD] 如何坚持TDD:使用者出现的问题以及解决方案
  • 原文地址:https://www.cnblogs.com/AndroidJotting/p/4290999.html
Copyright © 2020-2023  润新知