Re: [問題] ui圖片大小如何計算?

看板AndroidDev作者 (金)時間11年前 (2013/08/16 00:13), 編輯推噓4(404)
留言8則, 6人參與, 最新討論串2/2 (看更多)
※ 引述《a2975313 (GN)》之銘言: : 最近在開發這款硬體的app : http://www.asus.com/tw/Tablets_Mobile/ASUS_Transformer_Pad_Infinity_TF700T/#specifications : 幾個問題想向大家求教: : 1. 硬體說明寫到1920*1200單位是指px嗎? : 2. 請問我的圖片要放在哪種drawable裡面? : 3. 如果我要製作一張跟螢幕大小一樣的底圖,請問寬高要怎麼計算出來? : 4. google有一提供一個公式 px=dp*(dpi/160),老實說我完全看不懂要怎麼用,是否有更白話的翻譯? 1. 是 px. 2. 有 drawable四個資料夾分別是: ldpi, mdpi, hdpi, xhdpi每個都要放. dpi是 「dots per inch」縮寫即每一英吋的螢幕有多少個點, 我舉個例子: 通常低階手機螢幕不會太好, 每一英吋內的點會較少, 顯示圖片時會有顆粒感; 反之, 高階手機螢幕每英吋內點較多, 圖片看起來就較細緻. 原 PO在製作圖片時, 同一張圖片要製作成四個比例(0.75 : 1 : 1.5 : 2), 然後放入 0.5比例的放入 ldpi, 1比例的放入 mdpi, 依此類推... 作業系統執行你的 app時, 會自行判斷設備的 dpi值, 然後到對應的資料夾內取圖片. 對了, 如果你不想花太多時間可以只放一份在 mdpi就好, 若使用者設備是 xhdpi 系統會拿 mdpi裡面的圖片來縮放, 想當然耳可能會出現鋸齒狀比較不好看. 3. 舉凡可視化元件都是繼承自 View類別, View類別中的 onSizeChanged (int w, int h, int oldw, int oldh)方法的 w和 h參數就是 當前底圖的寬與高. 所以針對你要取得底圖的元件繼承它, 然後覆寫上述的方法就能取得你要的東西. 4. 續第二點的例子, 假設有兩台手機, 螢幕規格如下. 手機A: 螢幕解析度 2000x1000 pixel, mdpi 手機B: 螢幕解析度 1000X500 pixel, ldpi 假設你在螢幕上放一個按鈕, 按鈕尺寸寬為 「1000px」, 高為 「500px」 你注意到這會出現什麼情況了嗎? 手機A, 螢幕上出現一個按鈕, 大小約為螢幕的二分之一. 手機B, 會出現一個佔滿整個螢幕的按鈕! 這是因為寬和高的單位是 「px」. (要進入正題惹) 解決辦法是改用「dp」為單位, 如果按鈕尺寸寬為「1000dp」, 高為「500dp」 系統會透過 px=dp*(dpi/160)公式幫你將 1000dp及 500dp轉成 px值. 我簡單解釋公式的參數, px: 是我們要的結果, 系統會依這個值來繪製.(由系統算) dp: 你所指定的元件寬或高值. dpi: 設備的 dpi值, lpdi值約 80, mdpi值約 160, hdpi約 240, xhdpi約 320 160: 以 160當作分母是有典故的, 好像是當時 google的第一款手機螢幕是 160dpi, 從那時候開始就以 160作為 mdpi標準. OK 實際換算看看, 按鈕 1000dp x 500dp 在設備A上... 寬: 1000dp * ( 160 / 160)= 1000px 高: 500dp * ( 160 / 160)= 500px 在設備B上... 寬: 1000dp * ( 80 / 160 )= 500px 高: 500dp * ( 80 / 160 )= 250px 最後, 同個按鈕在設備 A和設備 B上看起來都佔滿二分之一. 看到這裡還沒 END算你厲害 本蛇要去八卦版發廢文惹.....顆顆 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.91.183

08/16 08:02, , 1F
讚!
08/16 08:02, 1F

08/16 08:29, , 2F
推~解釋詳細
08/16 08:29, 2F

08/16 10:12, , 3F
推專業
08/16 10:12, 3F

08/16 10:59, , 4F
ldpi 是 0.75 喔
08/16 10:59, 4F

08/16 11:01, , 5F
所以你底下資訊全部要重寫過喔
08/16 11:01, 5F
嚴格來說在一定範圍內的值都可以是 ldpi, 詳見底下連結 Figure 1 所以範例不必重寫 http://developer.android.com/guide/practices/screens_support.html 至於圖片製作比例 ldpi的是 0.75沒臭, 我記錯惹 ※ 編輯: fallenangels 來自: 163.13.201.26 (08/16 11:34) ※ 編輯: fallenangels 來自: 163.13.201.26 (08/16 11:36) ※ 編輯: fallenangels 來自: 163.13.201.26 (08/16 11:40)

08/16 15:31, , 6F
ldpi 最低只到 120
08/16 15:31, 6F

08/17 13:38, , 7F
good
08/17 13:38, 7F

08/18 10:26, , 8F
08/18 10:26, 8F
文章代碼(AID): #1I3Fv4V1 (AndroidDev)
文章代碼(AID): #1I3Fv4V1 (AndroidDev)