想做動效,可是你的需求寫清楚了么?

8 評論 13837 瀏覽 140 收藏 11 分鐘

精美的動畫對于提升產品體驗有很大幫助,如促進用戶理解功能,緩解用戶情緒,調動用戶積極心理,為產品提供亮點等等。諸如此類的文章相信各位已經看過不少了,不少人已經開始越來越重視動效在產品中的應用了,還沒有看過的同學不用急,谷歌官方的動效指南講解得很詳細,建議只看這個就夠了,配合一些動畫理解起來更容易。

你已經有了大致的想法,那么怎么讓研發(fā)哥哥們實現呢?demo又改怎么做呢?可別說讓研發(fā)下一個app照著做。

一、工具的選取

目前的動效設計工具非常多,建議使用主流的工具,不僅教程多,后期更新也更方便。我用過主流的有以下幾種,各有不同,需要針對彼此的優(yōu)缺點使用。

1. flinto

這個比較適合做頁面跳轉,比如從點擊一個按鈕從一個頁面跳轉到另一個頁面,實際項目中很少用,比較適合一些小項目,上手比較容易。

2. principle

相當于一個輕量級的AE,調節(jié)動畫非常方面,同步sketch使用,頁面跳轉或者單頁面小元素動畫都可以實現,缺點在于復雜的動畫難以實現,上手比較容易,可以同步手機演示。

3. origami studio

上手稍微有點門檻,實現動畫的方式是節(jié)點動畫,facebook推出的,前身為quartz composer 可以將動畫導出為android和iOS的代碼,需要引入的facebook的包,后續(xù)推出的origami studio中就不能再導出代碼了,另外使用origami studio 做的彈性動畫還需要接入pop引擎。綜合來說,可以方便地實現一些更復雜的動畫,如粘性,彈性,緩動等,不太適合頁面跳轉。

4. AE

可以是動效設計中的大殺器,你想要的特效都可以做出來,配合一些插件可以做出相當驚艷的效果,缺點就是上手難度大,而且做出的動畫不利于交互。最近airbnb推出的lottie可以將AE做的動畫轉為代碼,有興趣的同學可以保持關注。

對于動效軟件的選擇,看個人的愛好了,新手比較推薦flinto和principle。

二、設計時的注意點

別以為demo做好了就結束了,接下來才是最麻煩的一步,如何讓研發(fā)哥哥們實現你的動效。你可別拿著demo就直接丟給研發(fā)哥哥了,運動時間,淡化的百分比,運動的形式,這些可別讓研發(fā)看著你的demo猜。

在寫動效需求文檔的時候,有這么幾個注意點:

1. 運動模式

雖然研發(fā)會更喜歡勻速直線運動(畢竟做起來簡單),但是讓人愉悅的動效應該是模擬現實的,會有對應的減速和加速運動,這一點參考谷歌的動效指南就好,使用系統(tǒng)自帶的參數就好,不要再去調整加速曲線了。

2. 運動時間

要注意研發(fā)的單位一般是毫秒,所以你就盡量別寫0.03秒這種了。

3. 動畫的實現類

這里就要說到代碼層了,不能理解的沒關系,看看就好。

iOS 的動畫可以被分為兩大類:

  1. 系統(tǒng)提供的關鍵幀動畫實現方式:用戶指定關鍵信息,系統(tǒng)實現動畫過程,對用戶而言操作起來會簡單些。
  2. 逐幀動畫實現方式:周期性的調用繪制方法,繪制每幀的動畫對象。系統(tǒng)操作方法簡單,但用戶操作的工作量就會大一些。著名的 facebook 的pop動畫框架,就是使用CADisplayLink這種逐幀繪制的方式實現的。

如果繪制過程過于復雜,不能在屏幕刷新一幀的時間內完成,可以考慮改為每隔一幀繪制,相當于是 30 FPS的刷新率。不然可能會使動畫不連貫,有卡頓感。

采用關鍵幀的方式來實現動畫,要講的內容相對逐幀的方式就多的多了。

動畫過程實際是一個時間的函數,橫坐標是時間的變化值,縱坐標是動畫屬性的變化量。那么我們就可以在一個直角坐標系中,通過作圖來畫出這個函數。比如勻速運動的圖形,就是一條通過原點的直線。

所以這個類的功能就是畫出一條曲線,來表示時間和屬性變化之間的關系。而畫圖的方法,是使用的是畫貝葉斯曲線的方法。

系統(tǒng)提供了幾個常用的函數,比如kCAMediaTimingFunctionLinear就是勻速運動;kCAMediaTimingFunctionEaseInEaseOut就是一般系統(tǒng)動畫的默認值,漸入漸出,即在動畫開始和結束的時候速度稍慢些。

Android的動畫類

Android:interpolator

Interpolator 被用來修飾動畫效果,定義動畫的變化率,可以使存在的動畫效果accelerated(加速),decelerated(減速),repeated(重復),bounced(彈跳)等。

android中的文檔內容如下:

  • AccelerateDecelerateInterpolator:在動畫開始與結束的地方速率改變比較慢,在中間的時候加速
  • AccelerateInterpolator:在動畫開始的地方速率改變比較慢,然后開始加速
  • AnticipateInterpolator:開始的時候向后然后向前甩
  • AnticipateOvershootInterpolator:開始的時候向后然后向前甩一定值后返回最后的值
  • BounceInterpolator:動畫結束的時候彈起
  • CycleInterpolator:動畫循環(huán)播放特定的次數,速率改變沿著正弦曲線
  • DecelerateInterpolator:在動畫開始的地方快然后慢
  • LinearInterpolator:以常量速率改變
  • OvershootInterpolator:向前甩一定值后再回到原來位置

如果android定義的interpolators不符合你的效果也可以自定義interpolators

三、具體范例

如圖,一個點擊分享按鈕后,各個分享圖標依次減速入場的動畫的需求如下

說明:
1.優(yōu)化直播間分享面板,增加特效
2.當用戶點擊分享按鈕時(*包括傳統(tǒng)直播間主播面板的分享按鈕和上方分享按鈕,手機直播間的分享按鈕*),從下方彈出分享面板,逐個彈出分享icon,并淡入顯示分享獎勵。
3.用戶關閉分享面板時,分享icon從右到左依次下落淡化消失

相關參數:
1.分享面板減速彈出,運動時間225ms

2.分享icon從左到右依次彈出,運動時間225ms。帶有獎勵圖標的,當對應分享icon彈出后,分享圖標淡入顯示(時間225ms),第二個圖標比第一個遲100ms開始運動
eg:如圖第一個為qq圖標,當用戶點擊分享按鈕,分享面板彈出后,qq圖標開始彈出(時間225ms),100ms后第二個圖標(qq空間)彈出,當qq圖標完全彈出時,淡入顯示分享獎勵圖標,時間225ms。

3.分享icon從右往左依次收回,分享面板收回,所有運動的時間減少30毫秒,如分享面板收回時間195ms,分享icon收回時間195ms。
andorid端動畫曲線采用系統(tǒng)自帶:AccelerateDecelerateInterpolator(在動畫開始與結束的地方速率改變比較慢,在中間的時候加速)
iOS端動畫采用系統(tǒng)自帶:kCAMediaTimingFunctionEaseInEaseOut (在動畫開始和結束的時候速度稍慢些)

具體效果可參考附件視頻

四、Android和iOS可能的區(qū)別

1.在研發(fā)哥哥寫完代碼后,檢查的時候你會發(fā)現andorid似乎比iOS卡了那么一點點,這也是受很多一些因素影響,如果追求體驗,可以嘗試加快20ms。

2.一些動效,本身就是系統(tǒng)自帶的,如果不清楚,建議多閱讀官方文檔,或者設計前多請教研發(fā)吧。

也是學習動效沒多久,如果文章中哪里寫的不對,歡迎各位指出,共同討論。

 

本文由 @Placeless 原創(chuàng)發(fā)布于人人都是產品經理。未經許可,禁止轉載。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 最近也在寫交互動效,感覺好多細節(jié)寫的還是不夠細??

    回復
    1. 對對對

      來自北京 回復
    2. 西城

      來自北京 回復
    3. 比如說呢?交流交流嘛

      來自上海 回復
  2. 這個動效是交互設計師設計還是產品經理設計?有些公司根本不重視這塊啊

    來自北京 回復
  3. 學習

    來自浙江 回復
  4. 是是是是

    來自北京 回復