當前位置:首頁 » 安卓系統 » android適配原理

android適配原理

發布時間: 2025-07-18 05:11:59

A. Android屏幕適配-應用篇

Android屏幕適配-基礎篇
Android屏幕適配-應用篇

從兩個大方面闡述一下Android的屏幕適配:

Android推薦使用dp作為尺寸單位來適配UI ,通過dp加上自適應布局和weight比例布局可以基本解決不同手機上適配的問題,這基本是最原始的Android適配方案。
缺點
(1)這種方案只能保證我們寫出來的界面適配絕大部分手機,部分手機仍然需要單獨適配,但dpi的不同,還是會存在差異。
(2)一般的設計稿都是以px為單位的,所以我們在寫layout文件的時候需要將px轉為dp,影響開發效率。

 為了高效的實現UI開發,出現了新的適配方案,我把它稱作寬高限定符適配。簡單說,就是窮舉市面上所有的Android手機的寬高像素值,設定一個基準的解析度,其他解析度都根據這個基準解析度來計算,在不同的尺寸文件夾內部,根據該尺寸編寫對應的dimens文件:

鴻洋大神的作品 ,使用也超級簡單,核心功能就是在繪制的時候在onMeasure裡面做變換,重新計算px。
缺點 :我們自定義的控制項可能會被影響或限制,可能有些特定的控制項(框架沒有做適配的控制項),需要單獨適配。

  小結:上述幾種適配方案都是實際開發中用過的方案,但隨著技術不斷的更新,出現了更好的適配方案。

   實現原理 :Android會識別屏幕可用高度和寬度的最小尺寸的dp值( 其實就是手機的寬度值 ),然後根據識別到的結果去資源文件中尋找對應限定符的文件夾下的資源文件。
   sw限定符適配 寬高限定符適配 類似,區別在於,前者有很好的容錯機制,如果沒有value-sw360dp文件夾,系統會向下尋找,比如離360dp最近的只有value-sw350dp,那麼Android就會選擇value-sw350dp文件夾下面的資源文件。這個特性就完美的解決了上文提到的寬高限定符的容錯問題。
   優點: 1.非常穩定,極低概率出現意外
    2.不會有任何性能的損耗
    3.適配范圍可自由控制,不會影響其他三方庫
   缺點 :就是多個dimens文件可能導致apk變大,幾百k。

   附件: 生成sw文件的工具

   實現原理 修改系統的density值 (核心)
  今日頭條適配是以設計圖的寬或高進行適配的,適配最終是改變系統density實現的。
   過程:

  AndroidAutoSize 是基於今日頭條適配方案,該開源庫已經很大程度上解決了今日頭條適配方案的兩個缺點,可以對activity,fragment進行取消適配。也是目前我的項目中所使用的適配方案。
使用也非常簡單只需兩步:
(1)引入:

(2)在 AndroidManifest 中填寫全局設計圖尺寸 (單位 dp),如果使用副單位,則可以直接填寫像素尺寸,不需要再將像素轉化為 dp,詳情請查看 demo-subunits

B. Android屏幕適配的哪些事

為了保證用戶獲得一致的用戶體驗效果,使得某一元素在Android不同尺寸、不同解析度的手機上具備相同的顯示效果,則需要我們進行屏幕適配。
基礎概念

屏幕尺寸

屏幕尺寸是指屏幕對角線的長度,單位是英寸,1 inch=2.54 cm
屏幕解析度

手機在橫向和縱向上的像素點數總和,單位是像素(pixel),1px = 1像素點,舉個栗子,1080x1920,即寬度方向上有1080個像素點,在高度方向上有1920個像素點。
屏幕像素密度

每英寸像素點個數,單位是dpi,dots per inch。為簡便起見,Android 將所有屏幕密度分組為六種通用密度: 低、中、高、超高、超超高和超超超高。

  • ldpi(低)~120dpi

  • mdpi(中)~160dpi

  • hdpi(高)~240dpi

  • xhdpi(超高)~320dpi

  • xxhdpi(超超高)~480dpi

  • xxxhdpi(超超超高)~640dpi


  • dimen_example2.png


  • 即使使用dp,依然不能解決屏幕解析度的適配問題,我們可以針對不同的屏幕創建不同的dimen值。

C. Android 屏幕適配

1: dp: android 尺寸的基本單位。 在不同的解析度的手機裡面,1dp對應著不同數量的px, 這樣就實現了dp定義一個控制項大小的時候,在不同解析度手機里表現出相應大小的像素值。
2: 屏幕解析度: 1080下160, 表示寬度有1080個像素點而高度有2160個像素點。常見的解析度有320x480, 480x800, 720x1280, 1080x1920等。
3: 屏幕尺寸: 以寸為單位, Android設備對角線的長度
4: 像素密度: 每英寸的像素點
5: 屏幕尺寸, 解析度,像素密度 三者之間的關系:
密度(dpi)= √(寬2 + 高2)/屏幕尺寸

6: px:像素,是屏幕上顯示數據的最基本的點
7: dpi:屏幕像素密度,每英寸上的像素點數
8: sp:與dp類似,通常用於指定字體的大小,當用戶修改手機顯示的字體時,字體大小會隨之改變。

1: dp適配方案: Android自帶的原始的適配方案, 在不同的解析度手機裡面表現出相應大小的像素點。
缺點: Android的碎片化嚴重, 如果生產廠家沒有根據屏幕尺寸、解析度和像素密度的關系來規則定義, 或者出一些亂七八糟的屏幕大小,這樣的適配方案就不在適合了。

2: 寬高限定符:枚舉所有的屏幕寬高像素值,根據等比縮放去適配。如果沒有找到對應的屏幕, 則取默認的。 目前這種方案已經被棄用。

缺點:
1: 佔用資源大,會增加APK的體積。
2: 容錯機制大需要精準命中資源文件才能適配,比如1920x1080的手機就一定要找到1920x1080的限定符,否則就只能用統一的默認的dimens文件了。而使用默認的尺寸的話,UI就很可能變形。

3:AndroidAutoLayout適配方案(停止維護)

4: SW限定符適配方案:(smallestWidth最小寬度適配)
Android 會去識別屏幕可用高度或者寬度的最小尺寸的dp值。然後根據識別到的結果去對應的資源文件裡面去找尋相應的結果。
如何生成:ScreenMatch插件

此方案跟寬高限定的適配方案相比,有很好的容錯機制, 如果沒有找到對應的適配寬度, 那麼會在vlues文件裡面去找跟他最接近的寬度。

5:今日頭條適配方案:
1>: px 轉 dp 的公式 dp = px / density.不管我們設定的單位是什麼, 最終我們都會將這些單位長度轉化為px的。density就是他們的轉化比, 所以,動態改變這個轉化比也是可以達到我們適配屏幕的目的的。
2>: 通過修改density值,強行把所有不同尺寸解析度的手機的寬度dp值改成一個統一的值(在清單文件中定義),這樣就解決了所有的適配問題。
3>: Density = 當前設備屏幕總寬度(單位為像素)/ 設計圖總寬度(單位為 dp) ;
4>:引入了AndroidAutoSize屏幕適配框架:
https://github.com/JessYanCoding/AndroidAutoSize

最後, 最重要的................
點贊 點贊 點贊, 不重要的事情也就說3遍......

D. android中的適配器是什麼

適配器就是就是把一些數據給弄得適當,適合以便於在View上顯示。

1、Android適配器是數據和視圖之間的橋梁,以便於數據在View上顯示。適配器就像顯示器,把復雜局笑的東西按人可以接受的方式來展現。我們弊察常用的適配器一共有三個:ArrayAdapter,SimpleAdapter,SimpleCursorAdapter 這三個,他們都是繼承於BaseAdapter 。

2、Android是一種基於Linux的自由及開放源代碼的操作系統,主要使用於移動設備,如智能桐卜含手機和平板電腦,由Google公司和開放手機聯盟領導及開發。尚未有統一中文名稱,中國大陸地區較多人使用「安卓」或「安致」。Android操作系統最初由Andy Rubin開發,主要支持手機。

E. android 15邊到邊適配

Android 15邊到邊適配是指應用內容能夠延伸到屏幕邊緣,消除傳統導航欄和狀態欄的視覺分隔,為用戶提供更加沉浸式的體驗

具體解釋如下

  • 實現方式:在Android 15中,應用通過正確處理系統窗口插入(WindowInsets)來實現邊緣到邊緣顯示的支持。這確保了應用界面能夠充分利用整個屏幕空間,同時避免關鍵UI元素被系統欄遮擋。

  • 向後兼容性:為了實現向後兼容性,這些應用還會通過條件判斷和適配層,在舊版本系統上保持原有的顯示效果。這意味著,即使在未升級至Android 15的設備上,應用也能保持正常的顯示和交互。

  • 開發者注意事項

    系統欄顏色適配:開發者需要確保應用界面與系統欄顏色的協調性,以提供一致的視覺體驗。

    手勢沖突避免:由於邊緣到邊緣的顯示方式可能會與某些手勢操作產生沖突,開發者需要仔細測試並優化手勢識別邏輯。

    舊版本兼容:在開發過程中,開發者需要關注舊版本系統的兼容性,確保應用在不同版本的Android系統上都能正常運行。

  • 全屏顯示要求:在搭載Android 15或更高版本的設備上,一旦應用以SDK 35或更高版本為目標平台,應用就會以無邊框畫面顯示。這意味著應用需要在系統欄後面繪制內容,以適應全屏顯示的要求。這進一步強調了邊緣到邊緣適配在提升用戶體驗方面的重要性。

熱點內容
為什麼手機游戲分ios和安卓端 發布:2025-07-18 09:22:17 瀏覽:138
android數據顯示 發布:2025-07-18 09:17:27 瀏覽:526
腳本精靈天天酷跑怎麼用 發布:2025-07-18 09:00:04 瀏覽:153
android技術面試 發布:2025-07-18 08:59:55 瀏覽:966
c語言m是什麼 發布:2025-07-18 08:59:10 瀏覽:277
c語言布爾變數 發布:2025-07-18 08:54:52 瀏覽:648
linux的jdk下載 發布:2025-07-18 08:54:09 瀏覽:189
生女的演算法 發布:2025-07-18 08:17:54 瀏覽:645
加密硬碟推薦 發布:2025-07-18 08:11:22 瀏覽:944
oppo手機的密碼是多少 發布:2025-07-18 08:10:27 瀏覽:764