Android屏幕適配


title: Android屏幕適配
categories: 移動開發
tag:android

  • Android

abbrlink: 13324佈局

date: 2020-11-30 00:21:30

因爲Android系統的開放性,任何用戶、開發商、OEM廠商、運營商均可以對Android進行定製,修改爲他們想要的樣子,致使碎片化嚴重。Android手機的分辨率和尺寸千奇百怪,一樣的軟件在不一樣的手機上UI表現難以達到一致的效果,因此須要進行屏幕適配,針對不一樣的設備作一個比較統一的方案。先要搞清楚的問題就是什麼是屏幕尺寸?什麼是屏幕分辨率?什麼是屏幕像素密度?還有開發中的各類單位的意義,關於屏幕適配的各類解決方案,佈局適配與圖片適配,在圖片適配方案主要是記述了.9圖的使用和製做。字體

<!-- more -->spa

基本概念

什麼是屏幕尺寸?屏幕尺寸指屏幕的對角線的長度,單位是英寸,1英寸=2.54釐米,常見尺寸:2.4,2.8,3.5,3.7,4.2,5.0,5.5,6.0等。3d

什麼是屏幕分辨率?屏幕分辨率是指在橫縱向上的像素點數,單位是px,1px=1個像素點,通常以縱向像素×橫向像素,如:1920×1080。code

什麼是屏幕像素密度?在尺寸必定的狀況下分辨率越高則屏幕越清晰,屏幕像素密度越大!屏幕像素密度是指每英寸上的像素點數,單位是dpi,即"dot per inch」的縮寫。屏幕像素密度與屏幕尺寸和屏幕分辨率有關。好比對於兩個都是5寸的手機來講,A手機是1280×720的分辨率,B手機是1920×1020的分辨率,那麼也就意味着B手機能夠顯示得更清晰,B手機得像素密度也越大。xml

經常使用單位

dpi(屏幕像素密度)

屏幕像素密度是指每英寸上的像素點數,單位是dpi,即」dot per inch「的縮寫。上面已經說過了,再也不贅述。blog

px(像素點)

pixel的縮寫,像素,1px表明屏幕上一個物理的像素點。上面已經說過了,再也不贅述。圖片

dip、dp(密度無關像素)

dip、dp:都是Density Independent Pixels的縮寫,即密度無關像素,在像素密度爲160dpi的狀況下,1dp = 1px,可是在像素密度爲320dpi的狀況下,1dp = 2px,這就成爲了比例關係:ip

因此,1dp = (手機實際像素密度 / 160dpi)× 1px,換算公式則爲:

pxValue = (手機實際像素密度 / 160dpi)× dpValue

dp的範圍劃分
名稱 像素密度範圍
mdpi(中密度) 120dpi~160dpi
hdpi(高密度) 160dpi~240dpi
xhdpi(超高密度) 240dpi~320dpi
xxhdpi(超超高密度) 320dpi~480dpi
xxxhdpi(最高密度) 480dpi~640dpi

sp(設置字體大小)

sp:scaled pixels, 與dp相似,用於設置字體大小。

屏幕適配

佈局適配

一、禁用絕對佈局
二、少用px
三、使用wrap_content、match_parent、layout_weight
四、重建佈局文件

圖片適配

一、提供不一樣分辨率的備用位圖(美工作的)
二、使用自動拉伸圖

自動拉伸圖主要是指.9圖,它是Android App開發裏一種特殊的圖片形式,文件的擴展名爲:.9.png。.9圖片的做用就是在圖片拉伸的時候保證其不會失真。因此使用.9圖片,讓圖片在指定的位置拉伸和在指定的位置顯示內容,這樣圖片的邊邊角角就不會出現失真了。

上面那一部分是原始效果,下面那一部分是使用.9圖的效果。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:text="@string/tv_content"
        android:gravity="center"
        android:textSize="30sp"
        android:background="@drawable/other"
        android:layout_width="match_parent"
        android:layout_height="400dp"/>
    
    <TextView
        android:text="@string/tv_content"
        android:gravity="center"
        android:textSize="30sp"
        android:background="@drawable/dialog"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

  </LinearLayout>

如今有一張圖片那麼如何製做.9圖呢?

選擇Create 9-Patch file…選項以後,會彈出選擇保存位置的對話框,能夠本身選擇修改位置,通常都直接選擇OK便可,而後打開這個.9圖:

因此關於屏幕適配的問題作一下總結:

相關文章
相關標籤/搜索