day 14-15 面試題:Binder機制、動畫機制

面試題:

1. 什麼是Binder,用來幹什麼?講講Binder的機制?   
2. 動畫機制
	1.Android中的動畫分爲哪些種類 & 特點 & 缺點。
	2.知道SVG & 矢量動畫嗎?
	3.給我說說轉場動畫。
	4.給我談談插值器 & 估值器 的作用。
	5.說說Android動畫框架實現的原理。   

1. Binder的機制

1.1 什麼是Binder,用來做什麼?

  1. 什麼是Binder

    Binder是Android的一個類,實現了IBinder接口。從IPC角度來講,Binder是Android中的一種跨進程通信方式。

  2. Binder用來幹什麼?

    在Android開發中,Binder主要用在Service中,包括AIDL和Messenger。

  3. 使用Binder進行進程間通信有什麼好處

    1. 性能:Binder數據拷貝只需要一次,而管道、消息隊列、Socket都需要兩次,共享內存方式雖然不需要拷貝,但實現方式非常複雜。
    2. 安全:Binder機制從協議本身就支持對通信雙方做身份校驗,相較傳統的IPC通信方式安全性會提升很多。

1.2 Binder機制

Binder基於Client-Server的通信模式,總共有4個角色。

  • Client進程:調用端
  • Server進程:提供服務的進程
  • ServiceManager:Server需要註冊到Manager,Client可以從Manager中獲取Server的代理。
  • Binder驅動:驅動負責進程間通信的建立,數據包在進程之間的傳遞及交互等一系列操作。

一個完整的Binder通信流程:

  1. Client通過ServiceManager獲取服務端的BinderProxy代理對象
  2. 調用BinderProxy將參數、方法標識等傳給ServiceManager
  3. Client線程進入等待狀態
  4. ServiceManager將用戶空間的參數等請求數據複製到內核空間,並向Server插入一條執行方法的事務
  5. 事務執行完成通知ServiceManager,ServiceManager將執行結果從內核空間複製到用戶空間
  6. 喚醒等待的線程,響應結果

2. 動畫機制

2.1 Android中的動畫分爲哪些種類 & 特點 & 缺點

  1. View動畫
    view的真正位置並不會跟隨動畫移動。可以單獨或者組合使用平移、旋轉、縮放、透明等動畫效果。
  2. 幀動畫
    多張不同的圖片,通過幀動畫拼接起來播放,即可實現動畫效果,一些相對比較複雜難以實現的效果通過它來實現,使用場景比較少。
  3. 屬性動畫
    屬性動畫可以實現View動畫的所有效果,並且View的真正位置是跟着動畫一起動的,點擊事件及觸摸事件可以在動畫過程中執行。屬性動畫可以動態改變添加了getter和setter的View的屬性,從而改變View的繪製效果。
  4. 觸摸反饋動畫(Ripple Effect)
    這是一種點擊效果,設置上之後,點擊控件後會產生漣漪效果
  5. 轉場動畫和共享元素
    一般用在頁面跳轉時作爲轉場動畫使用。
  6. 矢量圖動畫(Vector動畫)
    使用使用這個網址的工具將普通的圖片轉換爲Vector文件 ,如果有需要動態轉換效果的圖標或者需要特定效果的VectorDrawable圖片會用到矢量圖動畫

2.2 知道SVG & 矢量動畫嗎?

  1. SVG
    知道,SVG是通過XML文件中的一系列點、線,曲線和相關顏色組成的矢量圖,放大不會失真,文件比圖片小,能夠通過控制path,寫出豐富的動畫效果。5.0以下需要引入兼容包才能支持。
  2. 矢量動畫
    使用AnimatedVectorDrawableCompat可以將動畫屬性添加到矢量圖中,圖片可以添加平移、縮放、旋轉、透明等效果,path可以設置移動路徑、填充顏色,描邊寬度、顏色,透明度等等組合成複雜的動畫效果。

2.3 給我說說轉場動畫

轉場動畫參考鏈接

Android 5.0之前支持Activity轉場動畫,分別在startActivity()和finish()調用的地方手動調用overridePendingTransition(in,out)指定進入和退出頁面的動畫效果。

Android5.0之後,啓動Activity時,可以調用ActivityOptionsCompat的不同方法實現轉場和共享元素過渡的效果。

2.4 給我談談插值器 & 估值器 的作用

插值器(Interpolator):主要是控制動畫的速度,主要包含:勻減速、勻加速、先加速後減速,先減速後加速、勻速等。

估值器(TypeEvaluator):控制屬性從動畫初始值到結束值中間的數值的具體變化值。比如,定義加速動畫的加速度值。

2.5 說說Android動畫框架實現的原理

此處暫時空着,因爲要有源碼分析,後面節選一種動畫源碼來做分析。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章