2011年5月3日

Android Tween 動畫



代碼完成控件動畫

Tween動畫


Tween動畫
tween動畫通過view的內容完成圖形的變化,來完成動畫的效果,主要有以下四種效果:
1. Alpha : 透明動畫效果
2. Scale: 放大縮小效果
3. Translate: 移動效果
4. Rotate: 旋轉效果

我們要在代碼完成動畫,步驟如下
1.    建立要動的控件UI
2.    建立動畫類(透明、放大、移動、旋轉)
3.    設定動畫屬性(位址、角度、時間等)
4.    啟動動畫(starAnimation(animation));

簡單的例子:

附註該動畫類也可以使用xml方式定義,我們直接使用starAnimation(該動畫)啟動。

public class Anim extends Activity {
    LinearLayout layout;
    // 透明度的動畫
    Button alphaBtn;          
    Animation alphaAnimation;
    // 放大縮小動畫
    Button scaleBtn;
    Animation scaleAnimation;
    // 移動動畫
    Button trnaslateBtn;
    Animation trnaslateAnimation;
    // 旋轉動畫
    Button rotateBtn;
    Animation rotateAnimation;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        layout = new LinearLayout(this);
      
        // Alpha動畫的按鈕
        alphaBtn = new Button(this);
        alphaBtn.setText("Alpha");
        alphaBtn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                alphaAnimation = new AlphaAnimation(0.1f, 1.0f);
                alphaAnimation.setDuration(1000);
                alphaBtn.setAnimation(alphaAnimation);
            }
        });
        // Scale動畫的按鈕
        scaleBtn = new Button(this);
        scaleBtn.setText("Scale");
        scaleBtn.setOnClickListener(new OnClickListener() {
          @Override
          public void onClick(View v) {
              scaleAnimation = new ScaleAnimation(0.1f, 1.0f, 0.1f, 1.0f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
              scaleAnimation.setDuration(1000);
              scaleBtn.setAnimation(scaleAnimation);
          }
        });
        // Translate動畫的按鈕
        trnaslateBtn = new Button(this);
        trnaslateBtn.setText("Translate");
        trnaslateBtn.setOnClickListener(new OnClickListener() {
          @Override
          public void onClick(View v) {
              trnaslateAnimation = new TranslateAnimation(10,100,10,100);
              trnaslateAnimation.setDuration(1000);
              trnaslateBtn.setAnimation(scaleAnimation);
          }
        });
        // Rotate動畫的按鈕
        rotateBtn = new Button(this);
        rotateBtn.setText("Rotate");
        rotateBtn.setOnClickListener(new OnClickListener() {
          @Override
          public void onClick(View v) {
              rotateAnimation = new RotateAnimation(0,360);
              rotateAnimation.setDuration(1000);
              rotateBtn.setAnimation(rotateAnimation);
          }
        });
        layout.addView(alphaBtn);
        layout.addView(scaleBtn);
        layout.addView(trnaslateBtn);
        layout.addView(rotateBtn);
        setContentView(layout);
      
    }
}


附註: 該動畫類也可以使用xml方式定義,我們直接使用starAnimation(該動畫)啟動。

ShareThis