當前位置:首頁 » 安卓系統 » android開發適配

android開發適配

發布時間: 2023-03-02 11:00:49

⑴ 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

⑵ Android切圖適配知識點匯總

對於在工作中沒有接觸過安卓版本app,或是面試的時候會被問到安卓解析度等問題,可以通過本文對安卓切圖有所了解。我在以往的工作中也沒有接觸過安卓設計等一系列問題,但是看完一些文章後,大致對安卓解析度等知識點有所了解。此文是對自己所了解到的知識做一個總結,也希望能幫助到不了解安卓一系列問題的同行們,好啦,馬上進入正題!

基本概念
1、手機屏幕尺寸計算方式:對角線尺寸/2.54(1英寸=2.54厘米)
2、解析度:屏幕上顯示的像素個數,單位尺寸內像素點越多,顯示的圖像就越清楚。

上圖中紅框框出來的是現在市場上主流的解析度,只要記這三個就可以。其他的已被淘汰。

3、屏幕密度:屏幕每英寸有多少個像素。
4、單位:dp是開發中用於描述尺寸和間距。
sp是用於描述字型大小和行距。

用哪種解析度來設計?
原則上需要為不同的解析度去單獨設計效果圖,但由於實際情況,只需要採用一種解析度去設計,目前多數採用720*1280的解析度。

需要提供幾套切圖?
只需要一套切圖即可
720*1280尺寸的切圖可以適配其他機型,有些特殊的切圖需要單獨適配的,比如icon等。
適配480 800的機型,只需要把切圖/1.5即可。
適配1080
1920的機型,只需要把切圖*1.5即可。適配此解析度的時候,需要在720 1280下畫圖的時候,盡量採用矢量圖形來畫圖。
例如,圖標是48
48的時候,適配1080 1920點時候,48px*1.5=72px.把矢量圖形調整為72px即可。開發會把切圖放到xxhdpi的文件目錄下,就會自動適配1080 1920
同樣,適配480 800的時候,48px/1.5=32px.開發把切圖放到hdpi文件目錄中,會自動適配。
720
1280的切圖,開發放到xhdpi的目錄下。
註:設計圖片的時候盡量採用偶數。

需要提供幾套標注?
在720*1280解析度下進行設計,此解析度下1dp=2px.
可以直接使用dp標注尺寸,sp標注文字大小

註:使用dp標注尺寸。使用sp標注文字大小

該使用什麼字體及字型大小?
中文字體:思源
英文字體:Android 4.x及以上採用Roboto,Android 2.x和3.x採用Droid Sans.
字型大小:12sp、14sp、18sp、22sp(也可根據實際情況調整)

目前掌握以上知識點,可能多少也有些小問題,歡迎有經驗的大神指正、指導。謝謝啦~

⑶ Android一般開發的時候的屏幕適配是怎麼做的

Android中一個layout想適配各種屏幕尺寸那麼需要按以下規則去寫layout:
1. 盡量使用wrap_content、match_parent、weight 來規定layout的大小。
2. 要確保布局的靈活性並適應各種尺寸的屏幕,應使用 「wrap_content」 和 「match_parent」 控制某些視圖組件的寬度和高度。
3. 使用 「wrap_content」,系統就會將視圖的寬度或高度設置成所需的最小尺寸以適應視圖中的內容,而 「match_parent」(在低於 API 級別 8 的級別中稱為「fill_parent」)則會展開組件以匹配其父視圖的尺寸。
4. 如果使用 「wrap_content」 和 「match_parent」 尺寸值而不是硬編碼的尺寸,視圖就會相應地僅使用自身所需的空間或展開以填滿可用空間。此方法可讓布局正確適應各種屏幕尺寸和屏幕方向。
5. 如果某些地方必須要規定控制項的大小,那麼要使用dp 或者 dip單位。
6. 欄位必須使用 sp單位。
7. 將不同的圖片放到不同的drawable目錄下,解析度的匹配規則如下:
drawable-mdpi 320 * 480
drawable-hdpi 480*800
drawable-xhdpi 720 * 1280
drawable-xxhdpi 1080 * 1920
drawable-xxxhdpi 1080+

⑷ android屏幕適配

android設備碎片化嚴重,因此在實際開發的時候需要做屏幕適配
適配主要是在以下幾個方面:

常見的布局適配主要是以下幾點:
a.避免寫死布局尺寸,使用wrap_content或者martch_parent
b.使用權重,比如linearlayout中的weight;
c.使用relative的相對位置擺放,比如layout_centerInParent="true"
d.ConstraintLayout 原理類似於relatvie,相對擺放,但是性能相對於relatvie會好一點
e.android官方的庫Percent-support-lib,該庫主要是用的是百分比適配

a. .9圖適配,這個是使用了.9圖可以在特別區域拉伸不失真的特性來適配
b. 使用多套點陣圖,匹配不同的解析度,比如在mipmap,mipmap-xhdpi,mipmap-xxhdpi,等文件夾下面放多套解析度不同的內容相同的圖片

是指同一個業務邏輯,在不同的設備上執行不同的跳轉方式,比如在手機上打開一個新的activity,但是在平板上,可以在橫屏狀態下,右側增加一個fragment,展示打開的頁面。

a.解析度限定符,使用drawable-dpi,drawable-hdpi等
b.尺寸限定符
c.最小寬度限定符
d.屏幕方向限定符

a.android9.0開始 有官方的api進行適配
b.華為,小米,魅族,vivo,oppo各大room廠商有對應的api進行適配

除了以上這些,還有dimens適配,但是都各有缺點,有的需要多套圖,有的需要多套資源文件,dimens適配的dimens文件過多,需要針對不同的屏幕解析度來生成對應的文件,比較繁瑣

以上,實際開發中,做的最多的適配為布局適配

開發中屏幕適配的核心是在於屏幕縮放,不論是哪種屏幕適配,都是以這個縮放為基礎

已知:設計圖手機像素(W,H),設計圖上控制項的像素值(ViewW,ViewH),目標設備解析度(TargetW,TargetH)
求:目標設備上view的寬高(TargetViewW,TargetViewH)
公式:寬:ViewW / W * TargetW=TargetViewW
高:ViewH / H * TargetH =TargetViewH
原理:根據當前設備的解析度,計算出設計圖上的控制項在該設備上的縮放比,然後根據縮放比,來動態的設置view, 最終換算出來的單位為px
該適配方式是通過自定義外部的ViewGroup,比如LinearLayout,RelativeLayout,在onMeasure方法中,遍歷子view,設置寬高以及padding,margin
以下是封裝了一個工具類,用來獲取屏幕寬高以及計算縮放比:

未完待續

⑸ Android 項目中軟體圖標適配和mipmap文件夾的規則

參考: Android開發使用mipmap文件夾的正確姿勢: px 、dpi 、dp

Android應用圖標微技巧,8.0系統中應用圖標的適配

測試的在華為手機Android 9.0系統中,但是在切換 targetSdkVersion 大於26和小於26的時候,並沒有對圖標進行原型切換,26前後對應的圖標形狀一樣。可能是華為對這部分源碼進行了修改,將mask層修改為圓角矩形。

mipmap 中的文件夾分別為

新創建的項目都會有這幾個文件夾,那麼這幾個文件夾是怎樣的呢?內部的規則是什麼呢?都是怎樣對應的呢?
講解這些之前我們需要知道我們平常見到的一些尺寸單位的關系:

px (像素點)和 dpi (像素單位密度)之間的換算公式是:

px,dpi 和 dp 之間關系:

上邊一些尺寸的基礎知識,感覺很亂啊。。。
接下來就將一下 mipmap 下邊幾個文件夾的關系 表1-1:

上邊 dp 對應 px 的比值我起名為 (luffy) 。
我們在開發的過程中,對圖片的展示通常就兩種:固定寬高,不固定寬高。
固定寬高會遇到的問題是放置的圖片可能會模糊;不固定寬高可能就會和自己想要的尺寸不一樣了。
我現在以不固定寬高的來說,比如給一個 TextView 設置 dropLeft ,這樣就不能設置寬高,那麼 ui 給的圖片我到底該放置到哪個 dpi 文件夾里邊才合適呢。因為我開發的是特定機器上的 app ,所以只需要一個 mipmap 文件夾就行了。
我現在將一張 32 * 32 的圖片分別放到這六個文件夾里邊,不固定尺寸的顯示圖片,並通過 方法 獲取圖片的寬高,測試機器的 dpi 是 480 。
記住兩個數據:圖片尺寸是 32 * 32 ;測試機是 480dpi 。
結果如下 表1-2:

結果是同一張圖片放到不同的文件夾中,顯示的尺寸是不一樣的,因為測試機是 480dpi ,對應的本命 mipmap 文件夾是 mipmap-xxhdpi ,所以這個文件夾中的圖片在這個測試機上都會原尺寸顯示。其他的文件夾中的圖片都會根據1-2表格中的 dp 和px的換算比例進行換算。比如,1-2表中 mipmap-xxhdpi 對應的 luffy 是 3 , mipmap-hdpi 的 luffy 值是 1.5 ,如果我們將 32 * 32 的圖片放到 mipmap-hdpi 文件夾中,其他文件夾中不放置,軟體展示圖片的時候就會獲取 mipmap-hdpi 文件夾中的圖片,顯示的效果我們知道是 64 * 64 ,再看對應著剛說的 luffy 值,是不是看出點什麼?好像不同文件夾中的圖片顯示的效果和luffy值有關啊。

比如 ,當將圖片放置到mipmap-hdpi 文件夾中:

那麼如果我們想不管從哪個文件夾獲取圖片,展示的都是 32*32 ,那好說啊,按照這個公式,獲取不同文件夾中需要放置的圖片尺寸。比如 mipmap-hdpi 放置 16 * 16 的圖片,就可以在我的測試機上展示 32 * 32 的效果了。

我上邊一直說的展示尺寸都是 px ,那麼在不同的機器上同時展示 32 * 32 的效果,根據上邊的公式可以實現,但是展示的效果肯定各不相同。
上邊的需求是我在做特定機器時,只有一種解析度,一種 dpi ,那我想把所有 mipmap 文件夾都塞滿,而且展示的效果都一樣,就需要上邊的公式。

當手機上不同的機器,不同的 dpi 展示同一種效果時,也就是佔用屏幕相同的比例時,那表示這個效果的值就是 dp ,相同的 dp 在不同的機器上展示的效果基本相同,比如我想在 480dpi 的機器上展示的效果要和 320dpi 一樣,那就需要它們展示的 dp 一樣,我們展示一個 32dp*32dp 的圖片。根據公式: px=dp*(dpi/160) 可以得到 32 * luffy=?px ;那麼 480dpi 對應的 luffy 值是 3 ,所以 480dpi 對應的 mipmap 中的圖片尺寸是 96px * 96px , 320dpi 對應的 mipmap 中的尺寸是 64 * 64 。

要在不同的機器上展示 32dp*32dp 的圖片一張表格展示: 1-3

其他 dp 的圖片都可以按照這個規則展示。

當合適的 mipmap 文件夾中沒有對應的圖片的時候,會優先往高的找,會優先找最近的

熱點內容
加密ovpn 發布:2025-05-12 12:01:55 瀏覽:43
python練手項目 發布:2025-05-12 11:14:07 瀏覽:122
壓縮聽算音頻 發布:2025-05-12 10:58:12 瀏覽:801
資料庫系統報告 發布:2025-05-12 10:43:17 瀏覽:603
日產高配有哪些配置 發布:2025-05-12 10:32:16 瀏覽:475
大眾朗逸哪個配置值得入手 發布:2025-05-12 10:31:20 瀏覽:505
壓縮包的後綴 發布:2025-05-12 10:20:35 瀏覽:942
煙台招聘編程 發布:2025-05-12 10:04:21 瀏覽:53
sql查詢所有表名 發布:2025-05-12 10:01:28 瀏覽:666
用python編譯器的簡單代碼 發布:2025-05-12 09:48:40 瀏覽:358