liguofeng29’s blog

個人勉強用ブログだっす。

AndroidのResource - Property Animation

Animatorは抽象クラスであり、通常はそのサブクラスを使用する。

サブクラス

  • AnimatorSet
  • ValueAnimator
  • ObjectAnimator
  • TimeAnimator

ルート要素

  • <set.../>
  • <objectAnimator.../>
  • <animator.../>

サンプルコード

① color_anim.xml

<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
    android:propertyName="backgroundColor"
    android:duration="3000"
    android:valueFrom="#FF8080"
    android:valueTo="#8080FF"
    android:repeatCount="infinite"
    android:repeatMode="reverse"
    android:valueType="intType">
</objectAnimator>

② activity_mail.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/container">
</LinearLayout>

③ MainActivity.java

package com.example.liguofeng.propertyanimationsample;

import android.animation.AnimatorInflater;
import android.animation.ArgbEvaluator;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;

public class MainActivity extends AppCompatActivity {

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

        LinearLayout container = (LinearLayout)
                findViewById(R.id.container);
        // MyAnimationViewコンポーネント
        container.addView(new MyAnimationView(this));
    }

    public class MyAnimationView extends View
    {
        public MyAnimationView(Context context)
        {
            super(context);
            // 動画リソース読み込み
            ObjectAnimator colorAnim = (ObjectAnimator) AnimatorInflater
                    .loadAnimator(MainActivity.this, R.animator.color_anim);
            colorAnim.setEvaluator(new ArgbEvaluator());
            // Viewに属性動画適用
            colorAnim.setTarget(this);
            // 開始
            colorAnim.start();
        }
    }
}

f:id:liguofeng29:20160106222917g:plain