馬上註冊  |  找回密碼

SAY討論區

查看: 238|回復: 14
打印 上一主題 下一主題

Android 碎片化?開發者要解決其實唔難 [複製鏈接]

Rank: 7Rank: 7Rank: 7

好友
0
帖子
4613
積分
9224
最後登錄
2018-7-31
在線時間
0 小時
跳轉到指定樓層
樓主
發表於 2014-8-27 21:29:35 |只看該作者 |倒序瀏覽
dqzkw4iz3yd.png Opensignal 早前一編關於 Android 碎片化的 zdocdmhp5d4.jpg xqy0asl3ynu.jpg 其後因應系統發展, Support Library 亦陸續加入不少新功能,如 Grid Layout 、Action Bar、Notification 等等, 使得開發向後支援的軟件都變得更方便。 除了官方的 Support Library,坊間一直有不同的第三方 Library 為 Support Library 作補完。例如 Jake Wharton 用以顯示 Action Bar 的 ActionbarSherlock 基本上是每個軟件必備,直到 Support Library revision 18 加入了 Action Bar 才被取代。有以上的 Library 幫助,要編寫一個向後支援的軟件基本上已經沒有技術上的問題了。 Opensignal 最後講到要設計一個成功的軟件,必須要使所有尺寸的螢幕顯示正確。以下為筆者的開發心得: 要設計一個能支援所有尺寸的 UI 主要考慮到三點,一是螢幕大小、二是螢幕密度、三是顯示方向.

  • 螢幕大小歸納了幾種: small、normal、large 及 xlarge,還有 3.2 打後的最小邊長 swXXXdp 等。由 1.6 版本開始,Google 已經向開發者說明 UI 設計應該使用 Density-independent pixel(dp / dip) 作為計算單位。所以,首先注意的是每一件元件都要以 dp 來作單位,而不是 px。再配合不同 Qualifier 就可以為不同大小的螢幕設定不同的排版 (如:layout-small、layout-xlarge、layout-sw600dp)。排版時要善用 weight 及 9.patch 圖片,這樣系統顯示版面時會自動為不同螢幕大小修正長度。
  • 螢幕密度大概分為 ldpi(舊螢幕,基本上可以不理)、mdpi、hdpi、xhdpi 、xxhdpi、xxxhdp(Nexus 5) 及 tvdpi(Google TV 及 2012年版的 Nexus 7),根據 1. 的排版,就可以製作不同大小的圖像應用到不同密度的螢幕。圖像大小可以以 mdpi 作為參巧值,如一個 50*50px 的圖片,在 hdpi 可以製作成 75x75px,xhdpi 為 100*100px。除質素提高外,較大的圖像所製作的按鈕在高密度的螢幕會較為好按。如果用家的設備開發者沒有制作相應的圖像資源,系統則會自動縮放現有的資源顯示。如要偷懶的話,可以只為 hdpi 或 xhdpi 製作圖像,但細小的螢幕可能會出現圖像過大的情況(可強制 dp 解決),而自動縮放亦都會使圖像質素下降,及較為耗電。
  • 基本上只要為 1. 所排的版面再以不同方向排版一次,如有需要的話可以配合 Fragment 為不同的方向製作不同版面。當然,再懶的話就強制只有一個方向亦無不可。
Android 碎片化為開發者帶來的問題,在 ICS 推出後已經變得越來越不明顯。只要配合上述之不同技巧,要開發一個軟件支援市面上九成九的設備其實唔難。當然,對比起 iOS 來說,Android 要測試多種螢幕使用了額外時間是無法避免的,還有其他硬體帶來的問題確實會偶爾發生,但最少在技術上要解決是沒有問題的,只是要選擇是否投資時間到那些設備上。 以後有機會筆者會再為大家介紹開發的技巧,希望讀者們多多支持。
分享分享0 收藏收藏0 讚好讚好0 Unlike!Unlike!0 分享 傳送 邀請

好友
0
帖子
130359
積分
136429
最後登錄
2019-2-28
在線時間
0 小時
No.1回覆者
發表於 2014-8-28 00:14:22 |只看該作者
第一次來這論壇..

好友
0
帖子
123922
積分
123949
最後登錄
2019-2-28
在線時間
0 小時
跟尾2
發表於 2014-8-28 00:15:44 |只看該作者
分享的文章不錯看

好友
0
帖子
127486
積分
130183
最後登錄
2019-2-28
在線時間
0 小時
跟尾3
發表於 2014-8-28 00:22:49 |只看該作者
我的idea,被樓主嫖竊了!

好友
0
帖子
125462
積分
125468
最後登錄
2019-2-28
在線時間
0 小時
5#
發表於 2014-8-28 00:26:42 |只看該作者
謝謝分享

好友
0
帖子
123862
積分
123879
最後登錄
2019-2-28
在線時間
0 小時
6#
發表於 2014-8-28 00:45:00 |只看該作者
要是文章和圖片能多一點,就好了

好友
0
帖子
123769
積分
123789
最後登錄
2019-2-28
在線時間
0 小時
7#
發表於 2014-8-28 01:04:21 |只看該作者
是樓主原創嗎

好友
0
帖子
124012
積分
124018
最後登錄
2019-2-28
在線時間
0 小時
8#
發表於 2014-8-28 01:12:06 |只看該作者
哈哈 瞧你說的~~~  

好友
0
帖子
124843
積分
124850
最後登錄
2019-2-28
在線時間
0 小時
9#
發表於 2014-8-28 01:26:28 |只看該作者
分享我的感謝,謝謝樓主

好友
0
帖子
130359
積分
136429
最後登錄
2019-2-28
在線時間
0 小時
10#
發表於 2014-8-28 03:44:13 |只看該作者
頂你一下.  
您需要登錄後才可以回帖 登錄 | 馬上註冊 |

Archiver|手機版|SAY討論區

GMT+8, 2026-7-5 00:01 , Processed in 0.809694 second(s), 13 queries .

Powered by go2tutor.comDiscuz! X2

© 2026 Community Networks Limited

回頂部