• Android 一般动画animation和属性动画animator


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    package com.example.animation;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.animation.TranslateAnimation;
    import android.widget.ImageView;
    import android.widget.Toast;
     
    public class MainActivity extends Activity {
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
         
        }
         
        public void click(View view){
            Toast.makeText(this, "click", Toast.LENGTH_SHORT).show();
        }
         
        public void move(View view ){
            float fromXDelta=0;
            float toXDelta=0;
            float fromYDelta=0;
            float toYDelta=200;
            TranslateAnimation animation = new TranslateAnimation(fromXDelta, toXDelta, fromYDelta, toYDelta);
            /**
             * time
             */
            animation.setDuration(1000);
            animation.setFillAfter(true);
            ImageView imageView=(ImageView)findViewById(R.id.imageView);
            imageView.startAnimation(animation);
        }
          
    }

    这是一般动画,再看属性动画

    区别:一般动画变换后只是图片移动了,view的位置不变,然而属性动画view随着图片移动。

    1
    2
    3
    4
    5
    public void move(View view ){
     
        ImageView imageView=(ImageView)findViewById(R.id.imageView);
        ObjectAnimator.ofFloat(imageView, "translationY", 0f,200f).setDuration(1000).start();
    }


    多种动画同时进行

    1
    2
    3
    4
    5
    6
    7
    public void move(View view ){
     
        ImageView imageView=(ImageView)findViewById(R.id.imageView);
        ObjectAnimator.ofFloat(imageView, "translationY", 0f,200f).setDuration(1000).start();
        ObjectAnimator.ofFloat(imageView, "translationX", 0f,200f).setDuration(1000).start();
        ObjectAnimator.ofFloat(imageView, "rotation", 0,360f).setDuration(1000).start();
    }

    Google提供了一种更节省系统资源的多种动画同时播放

    1
    2
    3
    4
    5
    6
    7
    8
    9
    public void move(View view ){
     
        ImageView imageView=(ImageView)findViewById(R.id.imageView);
     
        PropertyValuesHolder p1=PropertyValuesHolder.ofFloat("rotation", 0,360f);
        PropertyValuesHolder p2=PropertyValuesHolder.ofFloat("translationX", 0f,200f);
        PropertyValuesHolder p3=PropertyValuesHolder.ofFloat("translationY", 0f,200f);
        ObjectAnimator.ofPropertyValuesHolder(imageView, p1,p2,p3).setDuration(1000).start();
    }

    同时Google提供了animatorset,允许多种不同动画按照用户要求播放,如使用set.palyTpgether() set.playSequentially()

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public void move(View view ){
     
        ImageView imageView=(ImageView)findViewById(R.id.imageView);
     
     
        ObjectAnimator animator1=ObjectAnimator.ofFloat(imageView, "rotation", 0,360f);
        ObjectAnimator animator2=ObjectAnimator.ofFloat(imageView, "translationX", 0,200f);
        ObjectAnimator animator3=ObjectAnimator.ofFloat(imageView, "translationY", 0,200f);
     
        AnimatorSet set=new AnimatorSet();
        //set.playTogether(animator1,animator2,animator3);
        set.playSequentially(animator1,animator2,animator3);
        set.setDuration(1000);
        set.start();
    }
     

    结伴旅游,一个免费的交友网站:www.jieberu.com

    推推族,免费得门票,游景区:www.tuituizu.com

  • 相关阅读:
    Java 中字符串的格式化
    Awk学习笔记
    Spring任务调度实战之Quartz Simple Trigger
    Subclipse vs. Subversive
    使用OpenSSL生成自用证书
    httpclient处理页面跳转
    巧用TableDiff(转)
    DBCC了解页面结构
    取最新一条SQL优化
    SQL 2008 到 SQL2012的镜像
  • 原文地址:https://www.cnblogs.com/rabbit-bunny/p/4260037.html
Copyright © 2020-2023  润新知