Re: [問題] 螢幕解析度 資料夾問題
※ 引述《Ferich (純粹的透明)》之銘言:
: 在前幾篇 看到兩位大大在討論
: 我還是有很大的疑問
: 目前 手上測試的手機是
: xperia s 1280X720 4.3吋 PPI 312.47
: Nexus 7 1280X800 7.3吋 PPI 206.77
上述PPI我想指的是實際螢幕解析度/吋算出來的值,
由於我手上沒機台,我推論實務上
Xperia s在Android系統環境會設定為320dpi (xhdpi)
Nexus 7會設為213 (tvdpi)
因此可計算出這兩台的螢幕大小分別為
Xperia s 640dpX360dp
Nexus 7 960dpX600dp
PS:使用Android所定義的dp單位在設計與開發上是最好的作法。
: 用的套圖是 xhdpi的那個資料夾內的圖
: 圖是用1280X720 下去製作的
: 顯示都是正常
: 但是 放到 N7上 卻不是因為PPI縮小而變大
: 而是變成只要是warp_content的圖 都變成只有相當於畫面的1/2
: 也就是說 在xs上滿版的圖 in N7上 都只有幾乎一半大
: 後來用PhotoShop測試 居然要1920X1280的圖 在N7上 才會幾乎是滿版
這段話並不正確,
只有Xperia s是使用drawable-xhdpi內的圖,
而Nexus 7會使用drawable-tvdpi內的圖,
我這邊先假設你App內沒有提供drawable-tvdpi的圖檔,
不過沒關係,Android很聰明的會先尋找高解析度的圖檔,
並自動縮小到tvdpi應有的圖檔大小。
(若沒高解析度的圖檔,才使用低解析度的圖並放大到tvdpi應有的圖檔大小)
一定要知道圖檔被使用的情況是下列的哪一種,
1.該View不會動態變動大小,例如icon。
2.該View會動態調整大小,例如使用在background
for case 1
假設要顯示一個80dpX80dp的icon在畫面上,該icon的圖檔應該多大?
根據解析度不同,所需的圖檔大小也不同,
因此各個目錄裡面圖檔大小如下所列..
drawable-xhdpi 160pxX160px
drawable-hdpi 120pxX120px
drawable-tvdpi 106pxX106px
drawable-mdpi 80pxX80px
drawable-ldpi 60pxX60px
若能掌握住此原則,在寫layout xml時,
該ImageView的layout_width和layout_height只要使用wrap_content即可,
不用指定80dp,這樣彈性會比較大。
for case 2
假設是使用在View的background,
且該View內容會動態改變大小,
(ex..layout_width/layout_height設wrap_content或match_parent)
請務必使用9-patch圖檔,相關訊息請參閱
http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch
http://developer.android.com/tools/help/draw9patch.html
9 patch圖也是需要依據不同解析度來放置不同大小的9 patch,基本概念與case1相同。
: 問題1. xs 與 N7 螢幕解析度差不多 只是因為吋數 讓PPI不同
: 同一套圖 為何差異性大
如同上述
Xperia s 640dpX360dp
Nexus 7 960dpX600dp
這兩個螢幕大小完全不同,因此不可這樣相比。
: 問題2. 目前市面上的平板解析度百百種 Nexus10 2560X1600 Sony Z table 1920X1200
: 在如此過高的解析度下 就得靠 screen size的方式來區分 而非 dpi資料夾了嗎?
screen size跟drawable-<l/m/h/tv/xh/>dpi資料夾完全沒關係,
千萬不要把這兩個混在一起看了。
Android中screen size指的是螢幕大小,並非指解析度。
(因為有很高解析度但螢幕很小的情況,反之亦然)
Android使用dp單位來來當單位長度,因此可以使用dp來解釋螢幕大小
160dp = 1吋 ,因為dp是以 mdpi(160dpi, 1吋有160px)為基準,
在mdpi的狀況下,1dp = 1px。
以你提的兩個例子,
可分別算出螢幕大小為
Nexus10(xhdpi) 1280dpX800dp
Sony Z table(hdpi) 1280dpX800dp
因此這兩台螢幕是一樣大的。
: 問題3. 有無可以盡量 等比放大的設定啊~ 看起來解析度差沒關係
: 只要版面不要跑掉.
通常不會這樣設計介面...
我認為一般有水準以上的app大致會區分
手機、7吋平板/手機、10吋平板並分別設計layout
以小於600dp為手機介面
以大於等於600dp(sw600dp)小於800dp為7吋平板手機介面
以大於等於800dp(sw800dp)為10吋平板介面
: 問題4. 在上述的例子中 N7 1280X800 7.3吋的ui滿版 要用1920X1280的原因是...
: 這樣在設計上 很難捉模 ui應有的尺寸.
首先要有個認知就是,
在相同螢幕大小手機中,會有各種不同的解析度,
連10吋平板解析度都很有可能小於手機的解析度。
因此
只要把一般的圖檔以及用在background的圖檔的使用方式/時機弄清楚,
配合有彈性的介面/layout設計,
開發Android layout應該是很輕鬆愉快的啦~
: 感謝看完 請鞭
: 以上.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.34.92.63
討論串 (同標題文章)