隨著移動應用的不斷發展,用戶對於應用的需求越來越高,除了功能性之外,用戶也越來越注重於應用的設計與用戶交互體驗。而動畫作為一種非常重要的用戶交互體驗方式,也成為了現代移動應用設計中不可或缺的一部分。本文將為大家介紹一下Android中常用的動畫分類以及如何在應用中運用它們。
一、View動畫
View動畫顧名思義是對View進行動畫操作,Android中常用的View動畫有Tween動畫和Frame動畫。
Tween動畫
Tween動畫又稱為補間動畫,它可以根據時間的變化來改變View的屬性(比如大小、透明度、平移、旋轉等)使得View的變化看上去更加流暢。通過補間動畫,開發者可以很方便的實現各種動態效果。下面是一個旋轉動畫的示例:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <rotate android:duration="500" android:fromDegrees="0" android:pivotX="50%" android:pivotY="50%" android:toDegrees="360" /> </set>
上面的代碼定義了一個時長為500毫秒的旋轉動畫,從0度旋轉到360度。其中pivotX和pivotY指的是旋轉的中心點。
Frame動畫
Frame動畫是指播放一組圖片序列形成的動畫。在Android中可以通過AnimationDrawable來實現。下面是一個Frame動畫的示例:
<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/frame1" android:duration="100" /> <item android:drawable="@drawable/frame2" android:duration="100" /> <item android:drawable="@drawable/frame3" android:duration="100" /> </animation-list>
上面的代碼定義了一個播放3張圖片形成的Frame動畫,每張圖片播放100毫秒,效果就是形成了一個連續的動畫效果。
二、屬性動畫
屬性動畫是在View動畫的基礎上進一步發展的一種動畫形式。與View動畫不同的是,屬性動畫可以對任意對象進行動畫操作,而不是僅限於View,同時支持更多的動畫效果。Android中常用的屬性動畫工具是ValueAnimator和ObjectAnimator。
ValueAnimator
ValueAnimator可以用於對一個值進行動畫操作,比如View的透明度、位置、大小等屬性。
ValueAnimator valueAnimator = ValueAnimator.ofFloat(0f, 1f); valueAnimator.setDuration(1000); valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animator) { float fraction = animator.getAnimatedFraction(); view.setAlpha(fraction); } }); valueAnimator.start();
上面的代碼運用ValueAnimator實現了一個透明度變化的動畫效果,將View的透明度從0到1,持續時間為1秒鐘。
ObjectAnimator
ObjectAnimator可以對一個對象的屬性進行動畫操作,比如View的透明度、位置、大小等屬性,所以ObjectAnimator比ValueAnimator更加靈活。
ObjectAnimator animator = ObjectAnimator.ofFloat(view, "alpha", 1f, 0f, 1f); animator.setDuration(2000); animator.start();
上面的代碼運用ObjectAnimator實現了一個透明度變化的動畫效果,將View的透明度從1到0再到1,持續時間為2秒鐘。
三、揭露動畫
揭露動畫是在Android 5.0推出的一種比較特殊的動畫效果,也是現在主流應用組件採用的開場動畫。這種動畫效果就是在一個已有的布局上添加一個圓形動畫,將布局從圓形的中心向四周展開。該動畫實現原理是通過裁剪窗口來實現的。
代碼示例
下面是一個簡單的揭露動畫的代碼示例:
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { Animator animator = ViewAnimationUtils.createCircularReveal(view, centerX, centerY, startRadius, endRadius); animator.setDuration(1000); animator.start(); }
上面的代碼通過ViewAnimationUtils.createCircularReveal方法創建了一個圓形的揭露動畫,並指定了動畫持續時間為1秒鐘。
結語
動畫作為一種非常重要的用戶交互體驗方式,已經成為現代移動應用設計中不可或缺的一部分。通過本文的介紹,相信大家已經了解了Android中的動畫分類以及如何運用它們。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/198446.html