2014-03-24 69 views

回答

9

創建動畫本身非常簡單。你不需要一個庫。有哪些適合大多數情況下,還有其他的方法來製作動畫的東西兩個選項,但這些是最重要的:

  • 查看動畫
  • 對象動畫

沒有多大的差別在這兩者之間就如何使用它們而言,但它們可以做不同的事情。

1)查看動畫:

對於觀看動畫你得先寫一個動畫XML。其中描述了動畫的外觀和持續時間。當然,您也可以通過編程方式創建這些動畫,但在大多數情況下,使用xml創建動畫效果更好。例如,這裏有兩個動畫xmls,一個從頂部向下滑動視圖,另一個從視圖中淡出視圖。

滑下:

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate 
      android:fromYDelta="-100%" 
      android:toYDelta="0%" 
      android:duration="1000"/> 
</set> 

淡出:

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <alpha 
      android:fromAlpha="1" 
      android:toAlpha="0" 
      android:duration="700"/> 
</set> 

比你要加載這樣的動畫:

Animation slide = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_down); 

然後你就可以將動畫您如下所示:

linearLayout.startAnimation(slide); 

您可以將這些動畫合併到一個xml中,只需放置多個translate/alpha/etc。標記到一個集合標記中。

android:startOffset="500" 

爲了完整:這是你將如何創建編程淡出動畫:您可以通過設置startOffset這樣拖延的集合中的一個動畫開始

Animation fadeOut = new AlphaAnimation(1, 0); 
fadeOut.setStartOffset(offset); 
fadeOut.setDuration(duration); 

2)對象動畫器:

對象動畫器可以再次在代碼和xml中創建,但在大多數情況下,xml更可取。這是一個淡出動畫將會是什麼樣的對象動畫:

<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" 
       android:interpolator="@android:anim/linear_interpolator" 
       android:propertyName="alpha" 
       android:valueType="floatType" 
       android:valueFrom="1.0" 
       android:valueTo="0.0" 
       android:duration="1000" /> 

對象的動畫看起來可能更復雜一些的開始,但沒有太多的XML的差別。可以說ObjectAnimators比View Animations更適合的一件事是ObjectAnimators可能更強大,因爲它們可以爲任何對象的任何屬性製作幾乎任何動畫。例如圍繞它的Y軸並沒有多少人知道,這樣的事情,甚至有可能下面的動畫將旋轉視圖:

<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" 
       android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
       android:propertyName="rotationY" 
       android:valueType="floatType" 
       android:valueFrom="0.0" 
       android:valueTo="360.0" 
       android:duration="5000"/> 

這就是你如何創建編程相同的動畫:

ObjectAnimator animation = ObjectAnimator.ofFloat(view, "rotationY", 0.0f, 360f); 
animation.setDuration(5000); 
animation.setInterpolator(new AccelerateDecelerateInterpolator()); 
animation.start(); 

結果看起來是這樣的:

enter image description here

您可以從XML應用的ObjectAnimator動畫這樣的:

AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(getActivity(), R.animator.rotate_axis_y); 
set.setTarget(targetView); 
set.start(); 
+0

這是一個輝煌的答案,明確和重點。謝謝! – HenriqueMS

2

結賬Lottie by airbnb

鏈接到github

您可以使用Bodybovin解析導出爲JSON的Adobe After Effects動畫。

添加依賴

compile 'com.airbnb.android:lottie:2.1.0' 

JSON文件添加到資產,並以此爲如下

<com.airbnb.lottie.LottieAnimationView 
    android:id="@+id/animation_view" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    app:lottie_fileName="enter the json file name with .json extension" 
    app:lottie_loop="true" 
    app:lottie_autoPlay="true" />