快速滑過動畫所使用的阻力力,與 物件速率可用來建立物件的屬性動畫 暫停播放動畫。它有起初的動向 大部分來自手勢的速度,接著逐漸放慢速度。 當動畫速度夠快時,動畫就會結束 不要在裝置螢幕上出現明顯變化
![](https://developer.android.com/static/images/guide/topics/graphics/fling-animation.gif?hl=zh-tw)
如要瞭解相關主題,請參閱下列指南:
新增 AndroidX 程式庫
如要使用物理動畫,您必須在專案中新增 AndroidX 程式庫 如下所示:
- 開啟應用程式模組的
build.gradle
檔案。 - 將 AndroidX 程式庫新增至
dependencies
區段。Groovy
dependencies { implementation 'androidx.dynamicanimation:dynamicanimation:1.0.0' }
Kotlin
dependencies { implementation("androidx.dynamicanimation:dynamicanimation:1.0.0") }
建立快速滑過動畫
FlingAnimation
類別可讓您建立
物件的快速滑過動畫如要建立快速滑過動畫,請建立
FlingAnimation
類別的執行個體和
提供一個物件和要加入動畫效果的物件屬性。
Kotlin
val fling = FlingAnimation(view, DynamicAnimation.SCROLL_X)
Java
FlingAnimation fling = new FlingAnimation(view, DynamicAnimation.SCROLL_X);
設定速率
起始速度定義動畫屬性的速度 在動畫開頭所做出的變更預設起始速率為 設為每秒零像素因此,您必須定義起始速度 確保動畫不會立即結束
您可以使用固定值做為起始速率,也可以將其設為基準 觸控手勢的速度如果選擇提供固定值 您應該先以每秒 dp 為單位定義值,再將其轉換為像素 內建高可用性、全域同步一致性 以及每秒都有大量的輸入和輸出作業以每秒 dp 來定義值, 也不會改變裝置的像素密度和板型規格如要進一步瞭解 如要將起始速度轉換為每秒像素,請參閱 轉換 從每秒 dp 到像素 彈簧效果。
如要設定速率,請呼叫 setStartVelocity()
方法並傳遞
以像素為單位的速率這個方法會傳回
也就是設定速率的目標
注意:請使用
GestureDetector.OnGestureListener
和
用於擷取及運算的 VelocityTracker
類別
分別識別觸控手勢的速度
設定動畫值範圍
您可以設定動畫的最小值和最大值 將屬性值限制在特定範圍。這個範圍控制項是 為含有內建函式的屬性建立動畫效果時 範圍,例如 Alpha 值 (從 0 到 1)。
注意:當快速滑過動畫的值達到 動畫就會結束。
如要設定最小值和最大值,請呼叫 setMinValue()
和 setMaxValue()
方法
這兩種方法都會傳回您已設定值的動畫物件。
設定購物阻力
setFriction()
方法可讓您變更動畫的
可定義動畫中的速度減慢速度。
注意:如果您讓研究室開頭的阻礙 因此動畫會使用預設的阻力值為 1。
這個方法會傳回動畫會使用您的阻礙值的物件 因此,使用 Kubernetes Engine 即可。
程式碼範例
以下範例說明水平快速滑過手勢。從
速度追蹤工具為 velocityX
,而捲動邊界則
設為 0 和
maxScroll。阻礙設定為 1.1。
Kotlin
FlingAnimation(view, DynamicAnimation.SCROLL_X).apply { setStartVelocity(-velocityX) setMinValue(0f) setMaxValue(maxScroll) friction = 1.1f start() }
Java
FlingAnimation fling = new FlingAnimation(view, DynamicAnimation.SCROLL_X); fling.setStartVelocity(-velocityX) .setMinValue(0) .setMaxValue(maxScroll) .setFriction(1.1f) .start();
設定最低可見變更
當您為未以像素定義的自訂屬性建立動畫時,應將 向使用者顯示的動畫值最低幅度。這項服務 決定結束動畫的合理門檻。
動畫時不需要呼叫這個方法
DynamicAnimation.ViewProperty
,因為
最低可見變化幅度是沿用自資源。例如:
- 檢視畫面的最小可見變更值預設為 1 像素
使用
TRANSLATION_X
、TRANSLATION_Y
等屬性TRANSLATION_Z
、SCROLL_X
和SCROLL_Y
。 - 若是使用旋轉的動畫,例如
ROTATION
ROTATION_X
和ROTATION_Y
,最低可見 變更為MIN_VISIBLE_CHANGE_ROTATION_DEGREES
或 1/10 像素 - 使用不透明度的動畫時,可見的最低變更數是
MIN_VISIBLE_CHANGE_ALPHA
或 1/256。
如要設定動畫的最小可見變化,請呼叫
setMinimumVisibleChange()
方法並傳遞
其中一個最小可見常數或您需要計算的值
自訂屬性。如要進一步瞭解計算這個值的相關資訊
請參閱
計算最低可見變化值
專區。
Kotlin
anim.minimumVisibleChange = DynamicAnimation.MIN_VISIBLE_CHANGE_SCALE
Java
anim.setMinimumVisibleChange(DynamicAnimation.MIN_VISIBLE_CHANGE_SCALE);
注意:只有在動畫出現時,才需要傳遞值 。
計算最小可見變化值
如要計算自訂屬性的最小可見變更值,請使用 以下公式:
最低可見變更 = 自訂屬性值的範圍 / 範圍 像素動畫
舉例來說,您要建立動畫 (0 到 0) 動畫的屬性 100。這與 200 像素的變更相對應。根據公式 可見變更值為 100 / 200 等於 0.5 像素。