標籤:xamarin 安卓
xamarin安卓開發中添加動畫有好幾種,這裡歸納一下其中一種 interpolator,能夠實現一些簡單的平移、縮放、旋轉、透明度變化等動畫,基本夠用了,做頁面跳轉可以用。
1,interpolator的分類
android:interpolator: 加速器,非常有用的屬性,可以簡單理解為動畫的速度,可以是越來越快,也可以是越來越慢,或者是先快後忙,或者是均勻的速度等等,對於值如下:
- @android:anim/accelerate_interpolator: 越來越快
- @android:anim/decelerate_interpolator:越來越慢
- @android:anim/accelerate_decelerate_interpolator:先快後慢
- @android:anim/anticipate_interpolator: 先後退一小步然後向前加速
- @android:anim/overshoot_interpolator:快速到達終點超出一小步然後回到終點
- @android:anim/anticipate_overshoot_interpolator:到達終點超出一小步然後回到終點
- @android:anim/bounce_interpolator:到達終點產生彈球效果,彈幾下回到終點
- @android:anim/linear_interpolator:均勻速度。
|
2,
幾種動畫
alpha動畫:
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator"> <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:startOffset="500" android:duration="2000" /> </set>
scale動畫:
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator"> <scale android:fromXScale="1.0" android:toXScale="0.0" android:fromYScale="1.0" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:duration="2000" /> </set>
rotate動畫:
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator"> <translate android:fromXDelta="50%" android:toXDelta="100%" android:fromYDelta="50%" android:toYDelta="100%" android:duration="3000" /> </set>
translate動畫:
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator"> <translate android:fromXDelta="50%" android:toXDelta="100%" android:fromYDelta="50%" android:toYDelta="100%" android:duration="3000" /> </set>
屬性解釋:
duration: 動畫已耗用時間,定義在多次時間(ms)內完成動畫
startOffset: 延遲一定時間後運行動畫
fromXDelta: X軸方向開始位置,可以是%,也可以是具體的像素 具體見圖
toXDelta: X軸方向結束位置,可以是%,也可以是具體的像素
fromYDelta: Y軸方向開始位置,可以是%,也可以是具體的像素
toYDelta: Y軸方向結束位置,可以是%,也可以是具體的像素
fromAlpha: 開始透明度
toAlpha: 結束透明度
pivotX: 錨點x座標
pivotY: 錨點y座標
3,translate動畫執行個體
:
定義一個向上退出的動畫(從位置2 移動位置3)和從下面進入(從位置1移動位置2)的動畫定義檔案如下:
注意xml寫法跟上面不一樣,單獨的translate標籤,沒有套在set裡
out_to_up.xml (從螢幕上面退出)
<?xml version="1.0" encoding="utf-8"?><translate xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" android:fromYDelta="0%p" android:toYDelta="-100%p" android:duration="1000"></translate>
in_from_down.xml (從螢幕下面進入)
<?xml version="1.0" encoding="utf-8"?><translate xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" android:fromYDelta="100%p" android:toYDelta="0%p" android:duration="1000"></translate>
上面動畫可以用在activity切換上。
4,複合動畫
可以再xml檔案中定義多個Animation,這樣多個Animation可以一起運行,例如:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" android:shareInterpolator="true" > <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:startOffset="500" android:duration="3000" /> <rotate android:fromDegrees="0" android:toDegrees="400" android:pivotX="50%" android:pivotY="50%" android:duration="3000" /> </set>
各個動畫效果可以用一個set標籤疊加起來,達到更好的效果。
5,使用動畫
定義一個動畫,關聯一個xml檔案,然後調用某介面元素的StartAnimation函數
var in_animation = AnimationUtils.LoadAnimation(this, Resource.Animation.zoom_in);object.StartAnimation(in_animation);
Xamarin安卓開發:動畫Interpolator