android的動(dòng)畫有哪些
2025.05.25 18:39 5
Android中的動(dòng)畫主要分為以下幾類:
補(bǔ)間動(dòng)畫(Tween Animation)
- AlphaAnimation(透明度動(dòng)畫)
- 用于改變視圖的透明度,從而實(shí)現(xiàn)淡入淡出效果。
AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f); alphaAnimation.setDuration(2000); view.startAnimation(alphaAnimation);
- ScaleAnimation(縮放動(dòng)畫)
- 可以對(duì)視圖進(jìn)行放大或縮小操作。
ScaleAnimation scaleAnimation = new ScaleAnimation(0.5f, 1.5f, 0.5f, 1.5f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); scaleAnimation.setDuration(1500); view.startAnimation(scaleAnimation);
- 這里第一個(gè)參數(shù)表示起始X軸縮放比例,第二個(gè)參數(shù)表示結(jié)束X軸縮放比例,第三個(gè)參數(shù)表示起始Y軸縮放比例,第四個(gè)參數(shù)表示結(jié)束Y軸縮放比例,后面兩個(gè)參數(shù)表示縮放的相對(duì)位置。
- TranslateAnimation(平移動(dòng)畫)
- 使視圖在屏幕上移動(dòng)。
TranslateAnimation translateAnimation = new TranslateAnimation(0, 200, 0, 0); translateAnimation.setDuration(1000); view.startAnimation(translateAnimation);
- 前兩個(gè)參數(shù)表示起始和結(jié)束的X坐標(biāo)偏移量,后兩個(gè)參數(shù)表示起始和結(jié)束的Y坐標(biāo)偏移量。
- RotateAnimation(旋轉(zhuǎn)動(dòng)畫)
- 用于讓視圖進(jìn)行旋轉(zhuǎn)。
RotateAnimation rotateAnimation = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); rotateAnimation.setDuration(1200); view.startAnimation(rotateAnimation);
- 第一個(gè)參數(shù)是起始旋轉(zhuǎn)角度,第二個(gè)參數(shù)是結(jié)束旋轉(zhuǎn)角度,后面兩個(gè)參數(shù)同樣表示旋轉(zhuǎn)的相對(duì)位置。
屬性動(dòng)畫(Property Animation)
- ObjectAnimator
- 可以對(duì)任意對(duì)象的屬性進(jìn)行動(dòng)畫操作。
- 對(duì)一個(gè)View的背景顏色進(jìn)行動(dòng)畫變化:
ObjectAnimator animator = ObjectAnimator.ofArgb(view, "backgroundColor", Color.RED, Color.BLUE); animator.setDuration(2000); animator.start();
- 這里
ofArgb
方法指定了要操作的對(duì)象(view)、屬性名(backgroundColor)以及起始和結(jié)束值。
- ValueAnimator
- 用于產(chǎn)生一個(gè)連續(xù)變化的數(shù)值,通常配合
AnimatorUpdateListener
來(lái)監(jiān)聽數(shù)值變化并進(jìn)行相應(yīng)操作。 ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, 1); valueAnimator.setDuration(1500); valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { float fraction = animation.getAnimatedFraction(); // 根據(jù)fraction進(jìn)行操作,比如改變視圖大小 view.setScaleX(fraction); view.setScaleY(fraction); } }); valueAnimator.start();
ofFloat
指定了數(shù)值變化的范圍,通過(guò)getAnimatedFraction
可以獲取當(dāng)前動(dòng)畫的進(jìn)度分?jǐn)?shù)(0到1之間)。
- 用于產(chǎn)生一個(gè)連續(xù)變化的數(shù)值,通常配合
幀動(dòng)畫(Frame Animation)
- 通過(guò)順序播放一系列預(yù)先定義好的圖片來(lái)實(shí)現(xiàn)動(dòng)畫效果。
- 通常在XML文件中定義,
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/frame1" android:duration="100" /> <item android:drawable="@drawable/frame2" android:duration="100" /> <item android:drawable="@drawable/frame3" android:duration="100" /> </animation-list>
- 在代碼中使用:
ImageView imageView = findViewById(R.id.imageView); imageView.setBackgroundResource(R.drawable.frame_animation); AnimationDrawable animationDrawable = (AnimationDrawable) imageView.getBackground(); animationDrawable.start();
oneshot
屬性如果設(shè)置為true
,則動(dòng)畫只播放一次,設(shè)置為false
則循環(huán)播放。