Android 补间动画(Tween Animation)
Tween Animation(補間動畫):
? ? Tween動畫,通過對View的內容進行一系列的圖形變換 (包括平移、縮放、旋轉、改變透明度)來實現動畫效果。動畫效果的定義可以采用XML來做也可以采用編碼來做。
?
| 動畫類型 | XML配置方式 | Java代碼實現方式 |
| 漸變透明度動畫效果 | <alpha/> | AlphaAnimation |
| 漸變尺寸縮放動畫效果 | <scale/> | ScaleAnimation |
| 畫面旋轉動畫效果 | <rotate/> | RotateAnimation |
| 畫面位置移動動畫效果 | <translate/> | TranslateAnimation |
| 組合動畫效果 | <set/> | AnimationSet |
?下面以java 和 xml 的方式具體說下使用
1 平移動畫
'效果圖如下
? 1.1?java的方法實現
//平移動畫/*** java代碼實現*/TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, 0, 600);translateAnimation.setRepeatMode(Animation.REVERSE);// 設置動畫模式 這里是動畫重復translateAnimation.setRepeatCount(5); // 設置動畫的次數 當為-1的時候重復動畫translateAnimation.setFillAfter(true); // 設置為false的時候動畫走走完回到原來的位置,true是動畫結束之后位置不會改變translateAnimation.setDuration(2000); // 動畫持續時間img.startAnimation(translateAnimation); // 開始動畫
這樣就實現了上下移動的動畫,其他的移動設置參數即可
1.2 以xml 的方法實現
首先在res 目錄下創建一個anim 目錄然后在創建一個xx.xml 的文件里面內容如下
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"android:duration="2000"android:fillBefore="true"android:fromXDelta="0"android:fromYDelta="0"android:toXDelta="0"android:toYDelta="600" />
當然最外層也可以添加一個set 這個看個人習慣把
android:duration="2000" ---->動畫持續時間
android:fillBefore="true" ---> 如果fillBefore的值為true,則動畫執行后,控件將回到動畫執行之前的狀態 和fillAfter類似不過true和false 功能卻相反的
android:fromXDelta="0" ---->起始時X座標
android:fromYDelta="0"---->起始時Y座標
android:toXDelta="0"---->結束時X座標
android:toYDelta="600"---->結束時Y座標
然后java 內容
TranslateAnimation translateAnimation = (TranslateAnimation) AnimationUtils.loadAnimation(TweenActivity.this, R.anim.translate);translateAnimation.setFillAfter(true);img.startAnimation(translateAnimation);
2? 漸變透明度動畫
效果如下
2.1 以java 實現
//透明度動畫AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0.5f);alphaAnimation.setRepeatMode(Animation.REVERSE); // 設置動畫的次數 當為-1的時候重復動畫alphaAnimation.setFillAfter(true); // 設置為false的時候動畫走走完回到原來的位置,true是動畫結束之后位置不會改變alphaAnimation.setDuration(2000); // 動畫持續時間img.startAnimation(alphaAnimation);
2.2 以xml 方式實現
首先在res 目錄下創建一個anim 目錄然后在創建一個xx.xml 的文件里面內容如下
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"android:duration="3000"android:fillBefore="true"android:fromAlpha="1.0"android:toAlpha="0.1"/>
android:duration="3000" ---->動畫持續時間
android:fillBefore="true" ----->如果fillBefore的值為true,則動畫執行后,控件將回到動畫執行之前的狀態 和fillAfter類似不過true和false 功能卻相反的
android:fromAlpha="1.0"------>開始時透明度
android:toAlpha="0.1"------->結束時透明度
java 代碼
AlphaAnimation alphaAnimation = (AlphaAnimation) AnimationUtils.loadAnimation(TweenActivity.this, R.anim.alpha);img.startAnimation(alphaAnimation);
3 縮放動畫
效果如下
3.1 以java 代碼實現
//縮放動畫ScaleAnimation scaleAnimation = new ScaleAnimation(1, 2, 1, 2, Animation.RELATIVE_TO_SELF, Animation.RELATIVE_TO_SELF);scaleAnimation.setRepeatMode(Animation.REVERSE); // 設置動畫模式 這里是動畫重復scaleAnimation.setRepeatCount(5); // 設置動畫的次數 當為-1的時候重復動畫scaleAnimation.setFillAfter(true); // 設置為false的時候動畫走走完回到原來的位置,true是動畫結束之后位置不會改變scaleAnimation.setDuration(2000); // 動畫持續時間img.startAnimation(scaleAnimation);
3.2 以xml 代碼實現
首先在res 目錄下創建一個anim 目錄然后在創建一個xx.xml 的文件里面內容如下
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"android:duration="700"android:fromXScale="1.0"android:fromYScale="1.0"android:pivotX="50"android:pivotY="50"android:toXScale="0.0"android:toYScale="0.0" />
android:duration="700" ---->動畫持續時間 android:fromXScale="1.0" --->開始前X的縮放,0.0為不顯示, 1.0為正常大小 android:fromYScale="1.0"--->開始前Y的縮放,0.0為不顯示, 1.0為正常大小 android:pivotX="50" --->?動畫起始位置,相對于屏幕的百分比,兩個都為50%表示動畫從自身中間開始 android:pivotY="50" android:toXScale="0.0" --->動畫最終縮放的倍數, 1.0為正常大小,大于1.0放大 android:toYScale="0.0"
java 代碼調用
ScaleAnimation scaleAnimation = (ScaleAnimation) AnimationUtils.loadAnimation(TweenActivity.this, R.anim.scale);img.startAnimation(scaleAnimation);
?4 旋轉動畫
效果如下
4.1 以java 代碼實現
RotateAnimation rotateAnimation = new RotateAnimation(0, 180, Animation.RELATIVE_TO_SELF, Animation.RELATIVE_TO_SELF);rotateAnimation.setRepeatMode(Animation.REVERSE); // 設置動畫模式 這里是動畫重復rotateAnimation.setRepeatCount(5); // 設置動畫的次數 當為-1的時候重復動畫rotateAnimation.setRepeatMode(Animation.REVERSE); // 設置動畫的次數 當為-1的時候重復動畫rotateAnimation.setFillAfter(true); // 設置為false的時候動畫走走完回到原來的位置,true是動畫結束之后位置不會改變rotateAnimation.setDuration(2000); // 動畫持續時間img.startAnimation(rotateAnimation);
4.2 以xml 代碼實現
首先在res 目錄下創建一個anim 目錄然后在創建一個xx.xml 的文件里面內容如下
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"android:duration="3000"android:fillAfter="true"android:fromDegrees="0"android:pivotX="50%"android:pivotY="50%"android:toDegrees="-650"/>
android:duration="3000" ---->動畫持續時間 android:fillAfter="true" android:fromDegrees="0" ----->動畫開始時的角度 android:pivotX="50%" ----->屬性為動畫相對于物件的X坐標的開始位置 android:pivotY="50%"----->屬性為動畫相對于物件的Y坐標的開始位置 android:toDegrees="-650" ---->動畫結束時物件的旋轉角度,正代表順時針 負代表逆時針
java 代碼調用xml
RotateAnimation rotateAnimation = (RotateAnimation) AnimationUtils.loadAnimation(TweenActivity.this, R.anim.rotate);img.startAnimation(rotateAnimation);
5 上面的幾個屬性可以合在一起實現效果
?5.1 java 代碼
ScaleAnimation scaleAnim = new ScaleAnimation(1, 2, 1, 2, Animation.RELATIVE_TO_SELF, Animation.RELATIVE_TO_SELF);scaleAnim.setRepeatMode(Animation.REVERSE);scaleAnim.setFillAfter(true);scaleAnim.setDuration(2000);scaleAnim.setRepeatCount(1);AlphaAnimation alphaAnim = new AlphaAnimation(1, 0.5f);alphaAnim.setRepeatMode(Animation.REVERSE);alphaAnim.setFillAfter(true);alphaAnim.setDuration(2000);alphaAnim.setRepeatCount(1);AnimationSet set = new AnimationSet(true);set.addAnimation(scaleAnim);set.addAnimation(alphaAnim);img.startAnimation(set);
5.2 以xml 代碼實現
首先在res 目錄下創建一個anim 目錄然后在創建一個xx.xml 的文件里面內容如下
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"android:fillAfter="true"><!-- 各種單獨特效的雜糅 --><alphaandroid:duration="1000"android:fromAlpha="0.1"android:toAlpha="1" /><rotateandroid:duration="1000"android:fromDegrees="0"android:pivotX="50%"android:pivotY="50%"android:toDegrees="720" /><scaleandroid:duration="1000"android:fromXScale="0.1"android:fromYScale="0.1"android:toXScale="1.0"android:toYScale="1.0" /><translateandroid:duration="1000"android:fillAfter="true"android:fromXDelta="0"android:fromYDelta="0"android:toXDelta="0"android:toYDelta="600" />
</set>
java 代碼調用xml
Animation mutipleAnimation = AnimationUtils.loadAnimation(TweenActivity.this, R.anim.set);img.startAnimation(mutipleAnimation);
具體的可以看下demo github 鏈接地址點擊查看
總結
以上是生活随笔為你收集整理的Android 补间动画(Tween Animation)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qq个性签名友情伤感
- 下一篇: 6s手机多少钱啊?