-
1 # T0科技評說
-
2 # 小伊評科技
作為半個程式開發工程師,我覺得我有必要來談一下為什麼安卓發展到現如今這個地步,在流暢度以及跟手度方面依舊沒有辦法和IOS做抗衡的原因,經過比較慎重的思考之後,筆者認為主要是有三個原因:
1.技術層面有差距
2.安卓和IOS執行模式以及效率存在差異;
3.系統所面向的市場不同。
1.技術層面存在差距安卓系統雖然是谷歌公司一手開發和建立(2007年收購安卓之父的團隊)並且一直在提供版本迭代,但是目前市面上絕大多數安卓手機內建的OS均都是由不同手機廠商根據原版安卓系統定製而來。而我們國家在程式設計方面的起步本身就要比西方國家晚的多,而且由於語言以及思維的限制,如今我們國家整體的程式設計水平相比於西方國家依舊是有很大差距,這種差距在短時間內很難追得上。
而蘋果恰恰又是最早開始研發硬體系統的一個品牌,在程式設計方面的技術儲備放眼全球都是一等一的存在。那麼你認為單純以技術儲備來說,國內哪一個手機品牌能和蘋果相提並論呢?而手機系統的最佳化過程本身就是一個經驗積累的過程。所以就現階段而言,國內手機市場還沒有一個手機品牌能夠擁有超越蘋果的實力。
2.安卓和IOS在底層效率方面存在本質區別
安卓為了實現跨平臺的相容性以及減少開發難度,在應用層採用的是Java語言,這樣雖然提升了系統的相容性和跨平臺性,但是由於Java虛擬機器的存在不可避免地會影響到系統的執行效率。這一點大家從華為釋出方舟編譯器的PPT上應該有所瞭解,安卓系統採用的是邊解析邊執行的方式,效率極低。而IOS則是基於Objective-C開發的產物,在執行效率上要明顯高於基於Java開發的安卓。
如果我們用一個比較生動的例子來解釋的話,IOS的整個執行過程就像是在坐高鐵,從起點直接到達終點,執行效率很高,速度很快。而安卓系統的整個執行過程就像是綠皮車,在過程中走走停停需要不停的編譯和解釋,執行效率自然就要慢了很多。
另外還有一個方面那就是在任務處理的優先順序方面,IOS和安卓也有本質的不同。IOS會優先相應Touch層,也就是優先相應使用者的操作;而安卓則是優先相應Application層,也就是應用層,什麼意思呢,簡單來說就是在你進行一次操作之後,IOS是不管應用啟動沒啟動都會給你一個及時的操作反饋(動畫),而安卓則是先執行應用,再根據應用的反饋結果給你一個操作反饋,這種差異會隨著應用的複雜程度而逐漸凸顯,這也就是為什麼安卓在開啟遊戲等大型應用的時候其流暢度始終無法和IOS相媲美的核心原因之一。
3. IOS和安卓所面向的市場是完全不同的,安卓必須要考慮相容性。IOS是一個完全封閉的系統,其面向的機型相比於安卓要少得多,而且其每一年釋出的新機的效能都是一樣的,所以在針對不同機型的系統最佳化方面的工作量就要小得多了。而安卓則不同,安卓陣營的手機五花八門,上到售價萬元的高階旗艦下到售價千元的低端手機應有盡有,而這些機器的效能差距同樣也是非常巨大的,這就給系統最佳化造成了極大的挑戰和難度。
比如我們就拿非線性互動動畫這個來說吧,安卓可以不可以加入類似IOS的那種非線性動畫效果呢?當然是可以的,但是加入非線性動畫肯定會拔高系統對於硬體效能的需求,這點需求對於擁有旗艦級處理器的高階安卓手機來說不是問題,但是對於那些低端手機呢?肯定會讓本身就吃緊的效能更加的捉襟見肘,而想要針對不同價位的手機做細分那是完全不可能的事情。
不過好在隨著硬體配置的提升,現如今的很多安卓手機系統均配備了非線性的動畫切換效果,在整體流暢度表現方面已經有了長足的進步。
總的來說吧,安卓和IOS的差距是系統底層以及市場方面雙重影響的結果,安卓的定位註定了其在安全性以及流暢度方面是不可能做到和IOS一樣的,而IOS也註定了是無法大規模普及使用的,
-
3 # 秋天Future
動畫實現是一項程式設計非常複雜,又非常依賴GPU和效能的工程。
iOS由於只有一套系統,硬體之間差異不大,又和系統耦合度高,直接由iOS系統工程師編寫了大量的動畫演算法,並封裝成了API直接供APP開發使用。
所以你在iOS裝置上體驗到的動效,其實都是APP工程師一條語句調用出來的,複雜一點的,就多一條。
如果真遇到非常複雜需要特殊處理的,APP工程師才需要自己研製。
而Android的定位就完全和iOS不同了。其定位可以跑在各種不同的裝置,不管什麼廠商,什麼裝置。所以Android只提供底層核心。至於動畫什麼之類費心又不一定相容各種裝置的東西,就只有象徵性的「例子」。
對的,只有例子。連演算法都算不上。畢竟好的動畫跑在差一點的機子,輕則卡頓,重則奔潰。Android所屬的Google追求的是效能,不會允許這種事出現的。
「動畫這種事,我是不負責的,你愛咋搞咋搞去。」
所以哪怕最基本,最簡單的動畫演算法,都需要手機廠商,或APP工程師自己編寫。但因為工程成本,大家都沒時間搞,優先順序也不高,畢竟是錦上添花的東西。最後就造成了Android動畫不佳的體驗。
但轉折點來了。隨著裝置的硬體效能的提高,Google終於重視了動畫。因為動畫有助於體驗,而且在裝置和演算法進入效能瓶頸後,好的動畫絕對可以掩蓋效能的不足——至少看上去。
因此Google推出了Materal Design。現在又推出了All White Design。
也有許多,有非常多使用者量的,基於Android的ROM,也自行研製了動畫演算法,比如小米,華為和錘子。有了類似動畫等使用者體驗要素的加持,開發者也更願意研發此類ROM的APP,才進一步吸引使用者下載,造成強者恆強的局面。
這是好事。
說著說著有點離線了。至於為什麼iOS過渡動畫看上去非常流暢,是因為iOS運用了一個非常巧妙的技巧。
這個技巧便是,我稱之為預期設計。在早期iOS 6之前,更多用的是簡單的緩出的曲線。這個曲線很自然,模仿最後緩慢停止的效果。
在iOS 7時,iPhone介面開始變為扁平後,引入了新的動畫曲線。你會發現,這個曲線前期速度非常快,後面速度非常慢,就像一個人在打哈欠的效果。(下圖)
而這個動畫是經過非常嚴謹的設計的。
前期的快速可以給予使用者明確的預期。在你按下的瞬間,介面馬上就開始變化,可以給使用者立即開始運作,效能非常高的效果。
後期的慢速更是設計的奇蹟。通常的動效都會一路快下去,使用者等動畫結束後再進行操作。而蘋果發現,其實在動畫結束後,使用者還是得花0.1-0.2s再螢幕中定位尋找,再決定操作。
這時故意將後期的速度減慢到似停非停的狀態,使用者就可以提前切入到定位尋找的階段,等動畫停止後就立馬操作。
這就是為什麼iOS 7比iOS 6動畫其實還慢了77%,使用者還會覺得操作變快了的原因。而爭取出來的334ms對效能發揮的空間意味著什麼,相信每一位工程師都懂的。
這也就是蘋果很多時候每個部件都不是最優最強的,但經過設計後,總是最好的原因。
這是設計的力量。
安卓手機為什麼做不出iOS媲美的過渡動畫和如絲般順滑的手勢操作?比如橫屏時候上滑回主介面,原來我以為是卡頓,其實是沒有橫屏上滑的過渡動畫。是技術原因還是安卓系統的原因?感覺目前沒有一個廠商能做出跟蘋果一樣的感覺。
回覆列表
安卓為什麼做不出蘋果那種絲滑般的感覺?
對於這個問題,其實就是安卓跟蘋果的反應機制的問題,並不是什麼別的。很多人都說安卓做得再好也達不到蘋果那種絲滑般流暢的感覺,但是並不是卡頓的那種,但這只是反應機制跟廠家最佳化的問題。
安卓和ios的反應機制的不同在於:當你點選一個app圖示時,蘋果的機制是圖片先反應,然後才是應用啟動,最後載入,而安卓的機制是先開啟應用,然後才是圖示反應,最後才是載入,這其中的順序的不同,便也是導致我們感覺它們的流暢程度是遠遠不同的根本原因,因為蘋果的反應機制在圖示動的時候在背後悄悄開啟應用,這時你便是什麼也感覺不到了,而安卓把應用打開了,圖示過一會兒才能反應,就會產生了時間的延差,所以無論安卓怎麼最佳化、啟動多快,還是會一股腦地先給你開啟,然後就是給你不夠絲滑順暢的感覺。
再一個就是手機廠商的最佳化能力各有不同,目前來說,在動畫過渡的自然方面做得比較好的是小米、魅族,其它廠商也就一般般,華為的EMUI9.1以後提升很大,三星索尼等對於系統基本就是屬於負最佳化,如果不是旗艦用1年左右流暢度就會明顯下降。自從安卓引入了f2fs的檔案管理系統之後,安卓的流暢度就更加是發生了很大的變化,使用一兩基本不會發生明顯示卡頓。但是我們也不用擔心,我們現在各個廠商也在這方面的過渡動畫方面不斷努力,相信一定會給消費者帶來更好的用機體驗。