Re: [問題] 螢幕解析度 資料夾問題

看板AndroidDev作者 (秋)時間12年前 (2013/05/25 00:38), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《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
文章代碼(AID): #1HdvTxPb (AndroidDev)
文章代碼(AID): #1HdvTxPb (AndroidDev)