Android-動畫-面試題
問:插值器用過沒(插值器的種類有哪些|怎麼自定義插值器)?
答:
插值器決定值的變化模式,預設的種類有九個。
預設種類有:
AccelerateDecelerateInterpolator :在動畫開始與結束的地方速率改變比較慢,在中間的時候加速
AccelerateInterpolator:在動畫開始的地方速率改變比較慢,然後開始速率變化加快
LinearInterpolator:以常量速率改變
AnticipateInterpolator:開始的時候向後然後向前甩
CycleInterpolator:動畫迴圈播放特定的次數,速率改變沿著正弦曲線
PathInterpolator:動畫執行的效果按貝塞爾曲線
anticipateOvershootInterpolator:開始的時候向後然後向前甩一定值後返回最後的值
OvershootInterpolator:向前甩一定值後再回到原來位置
BounceInterpolator:動畫結束的時候有彈起效果
自定義插值器:
寫一個類實現Interpolator介面,Interpolator是一個空的介面繼承了TimeInterpolator介面,定義getInterpolation方法即可
問:屬性動畫出現的版本和原因(或者關於屬性動畫的其他問題)?
答:
出現的版本:Android 3.0(API 11)後才提供的一種全新動畫模式,出現原因為作用物件侷限於View,沒有改變View的屬性,只是改變視覺效果,動畫效果單一。
二類三方:
二類:ValueAnimator、ObjectAnimator是其重要的兩個類。
三方:ValueAnimator有ofInt、ofFloat、ofObject三個重要的方法
三個方法的作用:
1.建立動畫例項
2.將傳入的多個引數進行平滑過渡:此處傳入0和1,表示將值從0平滑過渡到1 ,如果傳入了3個Int引數 a,b,c ,則是先從a平滑過渡到b,再從b平滑過渡到c,以此類推,他們內建了估值器
插值器和估值器:
插值器(Interpolator):決定值的變化模式
估值器(TypeEvaluator):決定值的具體變化數值
問:動畫能組合在一起使用麼?
答:可以將動畫組合在一起使用AnimatorSet,
AnimatorSet.play() 播放當前動畫的同時可以
.with() :將現有動畫和傳入的動畫同時執行
.after() :將現有動畫插入到傳入的動畫之後執行
.before() : 將現有動畫插入到傳入的動畫之前執行
問:ObjectAnimator需要操作的view的屬性(Property)有
答:
1、Alpha 控制View的透明度
2、float TranslationX 控制X方向的位移
3、float TranslationY 控制Y方向的位移
4、float ScaleX 控制X方向的縮放倍數
5、float ScaleY 控制Y方向的縮放倍數
6、float Rotation 控制以螢幕方向為軸的旋轉度數
7、float RotationX 控制以X軸為軸的旋轉度數
8、float RotationY 控制以Y軸為軸的旋轉度數
問:補間動畫都有哪些(Tween動畫有哪些|怎麼旋轉、平移、縮放、透明度)?
答:
補間動畫由Animation類來實現具體效果,
包括平移(TranslateAnimation)、
縮放(ScaleAnimation)、
旋轉(RotateAnimation)、
透明度(AlphaAnimation)
四個子類,四種變化。
問:專案實現過哪些動畫、怎麼實現的?
答:
幀動畫、補間動畫、屬性動畫都用過
例如下拉重新整理時頭佈局裡我們使用了幀動畫
頁面裡有個彈出視窗使用了補間動畫,還加入了BounceInterpolator插值器的效果
[ 進度條 ] 使用了屬性動畫