"Android中的動畫"-Android面試必問"精華技能點"彙總
阿新 • • 發佈:2019-01-10
一.Android中的動畫有哪幾類,它們的特點和區別是什麼?
根據谷歌官方文件,動畫分為3種:
1.幀動畫/影象動畫(Drawable Animation)
- 1.xml方式->配置一組圖片,動態播放
2.補間動畫(View Animation)
- 1.位移動畫
- 2.縮放動畫
- 3.旋轉動畫
- 4.透明動畫
- 5.集合
3.屬性動畫(Property Animation)-是3.0之後才有的
- 擁有補間動畫所有的功能
屬性動畫和補間動畫的區別:
- 補間動畫:
- 是父容器不斷的繪製view,看起來像移動了效果,其實view沒有變化,還在原地
- 屬性動畫:
- 是通過不斷改變自己view的屬性值
- 是通過不斷改變自己view的屬性值
- 兩者的程式碼寫法如下:
//補間動畫
public void clickViewAnimation(View view) {
//位移動畫,x方向不變,y有0->250
TranslateAnimation animation = new TranslateAnimation(0, 0, 0, 250);
//時長
animation.setDuration(2000);
//停在結果位置
animation.setFillAfter(true);
//控制元件開始動畫,傳入動畫
iv.startAnimation(animation);
}
//屬性動畫
public void clickViewProperty(View view) {
//動畫物件:控制元件以及動畫的型別都寫在裡面,然後是一組"不盡"的陣列:比如Y方向的0->250又上又下
ObjectAnimator animator = ObjectAnimator.ofFloat(iv, "translationY", 0,
250, 100, 200, 250);
//時長
animator.setDuration(5000);
//物件開始
animator.start();
}
//測試他兩的區別
public void clickIv(View view) {
Toast.makeText(this , "點選了圖片", Toast.LENGTH_SHORT).show();
}
動畫插入器是什麼?
- 是各種效果實現所要用到的,比如加速,比如來回擺動等等
- 用法是:(一句程式碼)直接在動畫開始前設定即可:
animation.setInterpolator(new XXXInterpolator())
二.如何修改Activity進入和退出動畫
(可以通過兩種方式):
一通過定義Activity的主題
在styles.xml中編輯如下程式碼:
<style name="AnimationActivity" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/slide_in_left</item>
<item name="android:activityOpenExitAnimation">@anim/slide_out_left</item>
<item name="android:activityCloseEnterAnimation">@anim/slide_in_right</item>
<item name="android:activityCloseExitAnimation">@anim/slide_out_right</item>
</style>
新增themes.xml檔案:
<style name="ThemeActivity">
<item name="android:windowAnimationStyle">@style/AnimationActivity</item>
<item name="android:windowNoTitle">true</item>
</style>
二通過覆寫Activity的overridePendingTransition 方法。
overridePendingTransition(R.anim.fade, R.anim.hold);
@Override
public void overridePendingTransition(int enterAnim, int exitAnim) {
super.overridePendingTransition(enterAnim, exitAnim);
}