Android體驗趣-淺談iOS & Android
最近公司在iOS的專案上暫時沒有新進度要處理,主管怕我無聊所以讓我也去寫寫看Android, 基本上個人不是很排斥畢竟都是寫MoblieApp,對Android有更多認識也未嘗不是一件好事,這次就練寫了一個簡單的登入跟查看排行榜的簡單功能。
iOS & Android 開發差異(1)Layout :
這邊不提學什麼比較有前途比較適合我之類的沒營養話題,直接以開發上不同做討論。
Layout
作為一個手機軟體開發者,對UI畫面擁有一定的要求是很基本且合理的,再加上我習慣先做出App的UI Flow再進行開發所以第一點就來討論Layout這件事情吧。

圖為 Android Studio 介面。

圖為 Xcode StoryBoard畫面 (為sendbird的sample專案)。
Tools
同樣對於畫面刻畫兩套系統皆可以透過code或GUI的方式做呈現,code兩系統之間的不同在於語言,個人覺得習慣不同沒有什麼實質上的優劣。在GUI刻畫的方式下,iOS的Xcode無論是用storyboard或是xib個人都認為勝過Android Studio的xml designer,原因就在於兩者在面板工具上所能提供的調整項目實在有落差,許多設定還是要打開xml用Text去編輯調整,然而推崇no code is the best code的信念Xcode的工具就方便許多。
Design
我簡單用design來表達畫面建置的邏輯這件事情,要先提到的是在兩套系統中都可以用彼此畫面建置思維去完成畫面,先談談在iOS上的習慣吧。
在iOS建置畫面時元件的擺放我們第一個想到的就是Frame,Frame只要我們告訴系統這個元件的(x,y,width,height)就能夠產生我們想要的位置跟尺寸,一般來說並不會去設置絕對位置而是去設置相對位置,例如x是畫面上水平的哪個位置給予適當的比例,以求在不同版型下可以維持足夠美觀實用的畫面。
在Android進行layout時,就我目前所知是透過Layout這個物件先進行設定後將其套用在我們的元件上而這個物件有許多不同的種類,用來完成不同的需求,而所謂的Layout在iOS上我想可以把它當成約束來看待概念是差不多的。而其中兩種是我這次想要用來和iOS作為比較的,其一就是LinearLayout,它是一種依照水平垂直進行排版的一種方法,在開發者將想要的Layout樣式擺好將元件塞入,就像直接畫了一個停車格,在這停車格裡面停進你的車子,而這個停車格可以設成剛好符合你車子的大小或是選擇把螢幕上的寬高填滿兩種方式,設定好後只要把車停進去停車格就自動幫你調整。這種方式在iOS上比較少人這麼做,但這個做法其實非常新,因為不需要很仔細的去設定這個元件的所有條件,而是給予他一個空間在這個空間裡面,他會自動將元件擺放整齊,最快速可以套用這種思路進行畫面建置的,在 iOS我想就是StackView了,這是iOS9以後才推出的元件,開發時如果有機會用到的話,我想這樣的Layout思維是可以帶來樂趣的。
另一種在 Android上要提的layout是 RelativeLayout,這種方式就和一開始提到的很像,他的畫面建構依賴在其他物件上,概念來說就像A按鈕在B按鈕左邊 20dp,只要B按鈕的位置有辦法實踐就可以連帶產生出A按鈕的位置,同理在位置尺寸上都可以進行相依,一般來說在Android上在畫面需求比較複雜時才會使用。
以上就是我簡單的心得,供參考。


就附上這次Android的練習畫面,有錯誤歡迎提出討論進行更正
