Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android-通過Java代碼來實現屬性動畫

Android-通過Java代碼來實現屬性動畫

編輯:關於Android編程

Android-通過Java代碼來實現屬性動畫


除了可以使用定義xml文件來設置動畫之外,還可以使用java代碼來進行控制動畫。
示例如下:


布局文件:



    

    

主活動:

package com.xieth.as.againanimdemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity2 extends AppCompatActivity {

    private ImageView imageView = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        imageView = (ImageView) findViewById(R.id.id_img);
    }

    public void click(View view) {
        Toast.makeText(this, "click", Toast.LENGTH_SHORT).show();
    }

    public void move(View view) {
        TranslateAnimation animation = new TranslateAnimation(0, 200, 0, 0);
        // 設置顯示的時長
        animation.setDuration(1000);
        imageView.startAnimation(animation);
    }
}

設置事件
移動

TranslateAnimation animation = new TranslateAnimation(0, 200, 0, 0);
// 設置顯示的時長
animation.setDuration(1000);
imageView.startAnimation(animation);

運行:
這裡寫圖片描述


這裡寫圖片描述

ObjectAnimator.ofFloat(imageView, "translationX", 0F, 200F).setDuration(1000).start();

運行:
這裡寫圖片描述
可以看見效果是一樣的。


修改一下代碼:

  ObjectAnimator.ofFloat(imageView, "translationY", 0F, 200F).setDuration(1000).start();

這次是Y方向:
這裡寫圖片描述


旋轉<喎?/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPjwvcD4NCjxwcmUgY2xhc3M9"brush:java;"> ObjectAnimator.ofFloat(imageView, "rotation", 0F, 360F).setDuration(1000).start();

運行:
這裡寫圖片描述


組合動畫

 ObjectAnimator.ofFloat(imageView, "rotation", 0F, 360F).setDuration(1000).start();
          ObjectAnimator.ofFloat(imageView, "translationX", 0F, 360F).setDuration(1000).start();
          ObjectAnimator.ofFloat(imageView, "translationY", 0F, 360F).setDuration(1000).start();

運行:
這裡寫圖片描述
可以看到這三個動畫同時執行


使用PropertyValuesHolder

 PropertyValuesHolder p1 = PropertyValuesHolder.ofFloat("rotation", 0F, 360F);
        PropertyValuesHolder p2 = PropertyValuesHolder.ofFloat("translationX", 0F, 200F);
        PropertyValuesHolder p3 = PropertyValuesHolder.ofFloat("translationY", 0F, 200F);
        ObjectAnimator.ofPropertyValuesHolder(imageView, p1, p2, p3).setDuration(1000).start();

運行:
這裡寫圖片描述


使用AnimatorSet

ObjectAnimator a1 = ObjectAnimator.ofFloat(imageView, "rotation", 0F, 360F);
ObjectAnimator a2 = ObjectAnimator.ofFloat(imageView, "translationX", 0F, 360F);
ObjectAnimator a3 = ObjectAnimator.ofFloat(imageView, "translationY", 0F, 360F);
AnimatorSet set = new AnimatorSet();
set.setDuration(1000);
set.playTogether(a1, a2, a3);
set.start();

運行:
這裡寫圖片描述
效果一樣。


之前都是同事播放的,現在可以按照順序來執行。

set.playSequentially(a1, a2, a3);

運行:
這裡寫圖片描述

可以看到先旋轉,再向X方向移動,再向Y方向移動。


也可這樣進行順序控制。
先同時執行X和Y方向的移動,再進行旋轉

set.play(a2).with(a3);
set.play(a1).after(a2);

運行:
這裡寫圖片描述


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved