iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 7
0
自我挑戰組

Android App 初學者從零開始用Kotlin寫APP系列 第 7

<DAY7> 支援不同裝置解析度

支援不同裝置解析度:Android 裝置有不同的 螢幕尺寸(手機、平板電腦、電視等),而且螢幕也有不同的像素尺寸。有可能裝置的螢幕大小一樣,每平方英寸 160 像素,而另一部裝置的螢幕可以容納 480 像素。如果沒考慮這些差異,系統可能會縮放圖片(導致圖片變模糊),或者圖片可能會以完全錯誤的尺寸顯示。

尺寸相同的兩個屏幕可能具有不同數量的像素,如下圖所示
https://ithelp.ithome.com.tw/upload/images/20200920/20130598ccRTuwXLPn.png

dp(Density-Independent Pixel)

dp 是一個虛擬像素單位,1 dp 約等於中解析度螢幕(160dpi; the "baseline" density).上的 1 像素。對於其他每個密度,Android 會將此值轉換為相應的實際像素數。上圖將某個視圖定義為“100px”寬,那麼它在左側設備上看起來要大得多,使用“100dp”確保它在兩個屏幕上看起來大小相同。

    <Button android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/clickme"
        android:layout_marginTop="20dp" />
  • andorid 有提供換成像素單位
    dp 單位轉換為像素單位
    px = dp * (dpi / 160)*

dpi(dots per inch)#

由於Android 不同品牌手機的尺寸與解析度沒有固定,於是Google定義規範幾種螢幕的密度單位:
https://ithelp.ithome.com.tw/upload/images/20200920/20130598KsrQxu0TCs.png
不同密度大小的位圖的相對尺寸

sp

在定義文本大小時,應用可縮放像素 (sp) 作為單位。默認情況下,sp 單位與 dp 大小相同,但它會根據用戶的首選文本大小來調整大小。

    <TextView android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="20sp" />
    

reference :https://developer.android.com/training/multiscreen/screendensities

reference:https://medium.com/@kmgs4524/%E6%8E%A2%E8%A8%8Eandroid%E7%9A%84%E4%BB%8B%E9%9D%A2%E5%B0%BA%E5%AF%B8%E5%96%AE%E4%BD%8D-32907bfc74f4

reference:https://medium.com/@kopulin/%E8%9E%A2%E5%B9%95%E5%B0%BA%E5%AF%B8%E7%9B%B8%E9%97%9C%E8%A7%80%E5%BF%B5%E6%95%B4%E7%90%86-447983424625


上一篇
<Day6>Android studio layout
下一篇
<Day8>UI layout
系列文
Android App 初學者從零開始用Kotlin寫APP30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言