Xamarin安卓開發:動畫Interpolator

來源:互聯網
上載者:User

標籤: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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.