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(該動畫)啟動。