Re: [問題] ui圖片大小如何計算?
※ 引述《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
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
08/16 15:31, 6F
推
08/17 13:38, , 7F
08/17 13:38, 7F
推
08/18 10:26, , 8F
08/18 10:26, 8F
討論串 (同標題文章)