iT邦幫忙

DAY 8
5

安迪豬的Android學習筆記系列 第 8

我的Android筆記(10)

  • 分享至 

  • xImage
  •  

開發Android時的那些筆記...!!
一般來說如果一個layout裏頭用的都是相對應排版方式,
例如MATCH_PARENT、WRAP_CONTENT這類型的長寬設定,
是比較不會遇到可視範圍問題。
但如果遇到了,也別擔心,這邊教你如何縮小所有排版。
*******************************

上一篇回顧:
http://ithelp.ithome.com.tw/question/10135161

如圖,想像今天設計一個Layout是專門給10吋平板使用,
在這個Layout裡就只有單純的Menu跟Content兩個區塊。
如MENU的寬度是固定的值如200dp,CONTENT的寬度是相對的match_parent,
那麼在這一個10吋平板裡,這個layout看起來並無甚麼大礙。

根據上一篇使用dp的說法,
這個layout不管在哪一台裝置裡看起來都會是等比例的呈現。

問題來了,這樣設計的layout,在10吋以下的裝置時,
會發現使用者所能看到的範圍(紅線)隨著裝置變小而減少了,
由此可見,這不是一個最佳的UI設計實踐,
安迪豬稱這個為UI設計是有"可視範圍的問題"。

遇到這樣的問題,其實證明這個UI排版設計並不適合所有裝置呈現,
最好的辦法當然是重新設計。

另一種辦法就是將layout裡的內容放大縮小到可視範圍內,
例如將原本MENU的那200dp提到@dimen裡:

values/dimen.xml (預設就吃小一點的寬度)
<dimen name="menuWidth">100dp</dimen>

values-sw600dp/dimen.xml (平板就吃大一點的寬度)
<dimen name="menuWidth">200dp</dimen>

layout.xml
<FrameLayout android:layout_width="@dimen/menuWidth">
...
</FrameLayout>

將所有layout的絕對長寬值通通提出來到dimen.xml裡,
然後透過Providing alternative resource的方法
去對應取得最適合的dimen值來得到一個放大縮小並可容納入可視範圍內的UI。

如果是圖的長寬比例想吃放大縮小,那就要放兩張不同大小的圖才行...
res/drawable-mdpi
it.png (50x50的大小)
res/drawable-sw600dp-mdpi
it.png (100x100的大小)

最後,使用上述方式去放大縮小方式並不是一個最佳UI設計實踐,因為

app size會變大,因為同個圖檔都要給兩次以上
所有有影響到的dimen值也是要寫兩次以上,
要針對裝置和可視範圍去對layout和圖檔長寬做微調
總之~不論是在維護上還是開發上
所花的功跟時間上都不是那麼討喜。

雖然這是一個可以解決這類型問題的方法,
但要完全解決,還是乖乖的重新設計比較實在。


上一篇
我的Android筆記(9)
下一篇
我的Android筆記(11)
系列文
安迪豬的Android學習筆記12
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
老鷹(eagle)
iT邦高手 1 級 ‧ 2013-10-09 08:29:37

拍手沙發

apig1026 iT邦新手 4 級 ‧ 2013-10-10 18:57:00 檢舉

謝謝

0
卡斯
iT邦研究生 1 級 ‧ 2013-10-10 18:54:11

讚

apig1026 iT邦新手 4 級 ‧ 2013-10-10 18:57:09 檢舉

謝謝

我要留言

立即登入留言