2012年8月8日 星期三

Android:Tween動畫效果,並結合循環加速器

必須先於專案中res建立anim資料夾,有關動畫敘述的XML檔都放在裡面
循環加速器XML檔

<?xml version="1.0" encoding="utf-8"?>
<!-- 循環加速器 ,android:cycles="XX"可設定循環幾次-->
<cycleInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
    android:cycles="7"

/>

動畫敘述的XML檔

<?xml version="1.0" encoding="utf-8"?>
<!-- set元素可將多種動畫特效結合在一起同時運作
 android:interpolator="@anim/cycle7用來將加速器給導入
 主程式建立動畫物件時,就是以參考此XML檔來建立

此外,如果要讓有順序的播放,則可以利用不同先後順序的set(裡面放動畫元素,ex:scale translate...)來達到 -->
 <set xmlns:android="http://schemas.android.com/apk/res/android"
     android:interpolator="@anim/cycle7">
 
     <scale
        android:fromXScale="1.6"
        android:toXScale="0.6"
        android:fromYScale="1.6"
        android:toYScale="0.6"
        android:pivotX="50%"
        android:pivotY="50%"
        android:duration="3000"
     
        />
      <translate
        android:fromYDelta="0"
        android:fromXDelta="0"
        android:toXDelta="1000"
        android:toYDelta="0"
        android:duration="3000"
       />
   
    </set>



主程式


package com.example.mytween2;

import ...

public class MainActivity extends Activity {
//宣告動畫物件
Animation ani;
ImageView iv;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
     
        iv=(ImageView)findViewById(R.id.imageView1);
        //建立動畫物件
        ani=AnimationUtils.loadAnimation(this, R.anim.translate_cycle_interpolator);
     
     
    }

    public void but1_onclick(View v){
    //將動畫物件設給ImageView,並啟動
    iv.setAnimation(ani);
    iv.startAnimation(ani);
    }
 
}

沒有留言:

張貼留言