1. 程式人生 > >Android動畫插值器之PathInterpolator淺析

Android動畫插值器之PathInterpolator淺析

PathInterpolator,一種動畫插值器,以前從沒聽過動畫插值器的同學可以去這篇

好了,詳細大家已經瞭解了插值器的作用和用法,那麼我們開始這篇博文吧!

Method code
PathInterpolator(Path path) Create an Interpolator for an arbitrary Path.
PathInterpolator(float controlX1, float controlY1, float controlX2, float controlY2) Create an Interpolator for a cubic Bezier curve.
PathInterpolator(float controlX, float controlY) Create an Interpolator for a quadratic Bezier curve.

 先說第三種用法:傳入一個控制點座標,內部程式碼為:

Path path = new Path();
path.moveTo(0, 0);
path.quadTo(controlX, controlY, 1f, 1f);
也就是起始點為(0,0),結束點為(1,1),控制點為使用者傳入的一條二階貝塞爾曲線,不熟悉貝塞爾曲線的可以看這篇Android貝塞爾曲線的魅力

 或者看一個gif圖: 


 那麼這裡插值器為什麼要用到貝塞爾曲線呢?請看下圖:(以

translate位移動畫為例)


  這裡要說一下,距離和時間的單位都可以看做百分比,最大值是100%,也就是1,所以這裡使用貝塞爾曲線的目的就是控制每時每刻的動畫應該走的位移,這樣說很抽象,下面舉個例子:

  首先畫出"正確"的座標圖:


  上面的程式碼稍微改了一下。下面,我移到控制點,找到兩個算是極端的位置,演示一下效果:

1、控制點座標大概為(0f,2f)


動畫演示為:


可以看出,符合座標,先在很快時間走完所有位移,然後超過最大位移後再回到原來的100%位置

2、控制點座標大概為(1f,2f):


預期:緩慢走完全部位移,然後繼續緩慢超出,然後瞬間回到原100%位置

動畫:


哈哈,我們可以根據自己制定貝塞爾曲線的控制點,傳入PathInterpolator,就可以控制動畫啦~

我們接著說第二個構造方法:傳入兩個控制點座標,構造一個三階貝塞爾曲線,功能和二階一樣,具體我就不做贅述,

第一個構造方法:傳入一個Path物件,可以用path構造出貝塞爾曲線,也可以是別的曲線,比如:

     Path path = new Path();
     path.moveTo(0f,0f);
     path.lineTo(1f,0.5f);
     path.lineTo(1f,1f);

座標:


這樣的動畫預期就是:緩慢走完一般路程,最後瞬間走完剩下的路程

動畫展示:


好了,就到這裡啦~喜歡的或不喜歡的都可以評論給我表揚或者批評,與諸君共勉!

相關推薦

Android動畫PathInterpolator淺析

PathInterpolator,一種動畫插值器,以前從沒聽過動畫插值器的同學可以去這篇 好了,詳細大家已經瞭解了插值器的作用和用法,那麼我們開始這篇博文吧! Method code

動畫Interpolation

插值器定義: 用於修改一個動畫過程中的速率,可以定義各種各樣的線性或非線性變化函式,比如勻速.加速.減速等。 說白了(也就是通俗的說):其實就是一個 時間的函式,用來 定義了動畫的變化律 系統的插值器: 在Android中所有的插值器都是Interpolator 的

Android 動畫動畫詳解(二)

大家好,在上一篇中,我們介紹了Android 的補間動畫,這一篇我們來說說動畫的另外一個公共屬性插值器Interpolator 【Android 動畫】動畫詳解之補間動畫(一) 在上一節中,實現的旋轉、位移動畫等動畫,我們會發現它一直是勻速的,但如果我們需要做一個加

android 動畫 (二)

插值器 首先要了解為什麼需要插值器,因為在補間動畫中,我們一般只定義關鍵幀(首幀或尾幀),然後由系統自動生成中間幀,生成中間幀的這個過程可以成為“插值”。插值器定義了動畫變化的速率,提供不同的函式定義變化值相對於時間的變化規則,可以定義各種各樣的非線性變化函式,比如加速、減速等。下面是幾種常

Android - 動畫(幀動畫,補間動畫,屬性動畫,以及

一: 動畫的分類 幀動畫 補間動畫 屬性動畫 二:解析 1. 幀動畫 (1)定義 這些圖片是將一些列的drawable組合在一起,進行連續的播放, 類似於以前電影源用膠捲進行動畫播放 (2)有圖有真相 (3)準備圖片 看著是不是還行,哈哈,

Android動畫詳解(二)

在上一篇Android動畫詳解(一)補間動畫中我們提到過一個叫插值器的東西,看名字一頭霧水完全不知道是什麼神奇玩意。其實用人話翻譯過來就是速度模型或者速度曲線的意思。為動畫設定插值器就是設定動畫的速度模型,就是設定它是怎麼動的,先加速再加速呀、一直減速呀、勻速的

Android 動畫:你真的會使用與估嗎?(含詳細例項教學)

前言 動畫的使用 是 Android 開發中常用的知識 可是動畫的種類繁多、使用複雜,每當需要 採用自定義動畫 實現 複雜的動畫效果時,很多開發者就顯得束手無策 Android中 補間動畫 & 屬性動畫實現動畫的原理是: 其中,步驟2中的

Android開發中屬性動畫(ObjectAnimator)中 (Time Interpolator )詳解

在 Android開發中,為了保持良好的互動體驗,我們經常會用到動畫來提升使用者體驗,而動畫中屬性動畫用的最多。 雖然動畫可以讓介面看起來不是那麼粗糙,但是很多時候僅僅只是勻速運動的動畫可能不足以描述一些我們想呈現給使用者的介面,比如模擬一個下落的小球,我們知道下落的小球並不是以勻速運動的,

Android 屬性動畫 常用方法 與 Interpolator

轉載於。加了點自己的修改 ViewPropertyAnimator 使用方法 view.animate().translationX(500); 具體可以跟的方法以及方法所對應的 View 中的實際操作的方法如下圖所示:

android初識屬性動畫---Interpolator

nterpolator屬性是Animation類的一個XML屬性,所以alpha、scale、rotate、translate、set都會繼承得到這個屬性。Interpolator被譯為插值器,其實我不大能從字面上理解為什麼會這樣譯,其實他是一個指定動畫如何變化

Android屬性動畫(三) TimeInterpolator(

OK,繼續學習屬性動畫,本篇文章是屬性動畫系列的第三篇文章了,今天來學習一下屬性動畫中的TimeInterpolator,如果你對屬性動畫還不太熟悉,可以點選下面的連結學習一下前兩篇文章的知識: 1.介紹 先說說Interpolator,在And

自定義控制元件三部曲動畫篇(二)——Interpolator

前言:雖然我不太能欣賞的了帕爾哈提的音樂,但我確實很欣賞他的人生態度,專心做自己,不想名利得失,有一天,你想要的東西都會來。其實我覺得,人生最可怕的就是停止不前,只要一直前行,總有一天會到達人生巔峰。相關文章:一、概述Interpolator屬性是Animation類的一個X

Android動畫-Interpolator()大全

花了點時間,把所有動畫的插值器都用了一遍,寫了個Demo分享下,看效果之前先看下Android動畫中插值器的型別: AccelerateDecelerateInterpolator    @android:anim/accelerate_decelerate_inter

android.view.animation(2) - Interpolator

tin logs lis png 16px tor 文件 anim near public interface Interpolator implements TimeInterpolator android.view.animation.Interpolator

屬性動畫中的和估

1、概述         谷歌在android3.0時候給我們帶來了屬性動畫,真正意義上帶來了”動畫“,以前的幀動畫也就4中效果的組合(旋轉、淡入淡出、放大縮小、平移),而且只是表面的動畫,最經典的比如,把一個button按鈕移動到另一個位置,然後去點選,一點反應都沒有,但

Android Interpolator 介紹

插值器Interpolator 簡介 interpolator可以翻譯成插值器。 Android中interpolator最底層的介面如下: package android.animation; /** * 時間插值器定義了一個動畫的變化率。 * 這

Animation:解決Android Animation 迴圈執行的停頓問題

在Android開發中,有時候我們需要一個動畫一直迴圈執行下去,常見的如laoding菊花一直旋轉,這時候就需要使用Animation的repeat功能,如下: animation = new RotateAnimation(0f, 360f, lightView.getW

和估

  時間百分比===》屬性百分比===》屬性值。 1.插值器: @Override     public float getInterpolation(float input) { } input ==當前動畫用的時間/動畫總

Android簡單視訊播放VideoView(一)

早上起來有時間,發一篇博文,最近在開發電視機頂盒的視訊播放,涉及到Android當中比較常見的視訊播放器控制元件的使用,以此為例,記錄下來。 首先,上效果圖: 通過VideoView播放視訊的步驟: 實現方式:使用XML佈局和java程式碼控制元

android】音樂播放設計思路

           學習Android有一個多月,看完了《第一行程式碼》以及mars老師的第一期視訊通過音樂播放器小專案加深對知識點的理解。從本文開始,將詳細的介紹簡單仿多米音樂播放器的實現,以及網路解析資料獲取百度音樂最新排行音樂以及下載功能。         功能介紹