androidxhdpi
『壹』 Android應用的UI設計圖要做多大解析度
Android應用的UI設計圖要做的解析度為:1920*1080;
一般來說安卓常見的解析度為:320*480;480*800;540*960;720*1280;1920*1080;
但對於UI設計來說,盡可能保持設計的解析度達到技術開發的標准,一般都以720*1280或1920*1080為主,但為了避免技術協調的沖突,則以1920*1080為主,不會出現大的錯誤。
『貳』 瀹夊崜寮鍙戝湪drawable鏂囦歡澶逛笅濡備綍鎻掑叆鍚庣紑涓簒hdpi鐨勫浘鐗
涓ょ嶆柟娉
1錛歝opy鍥劇墖榪沝rawable鏂囦歡澶規椂錛屽湪璺寰勫悗闈㈠姞涓娾-xhdpi鈥
2.鐩存帴鍦╠rawable鏂囦歡澶逛笅鏂板緩涓涓猟rawable-xhdpi鏂囦歡澶癸紝浣犲啀娣誨姞鍥劇墖鐨勬椂鍊欏氨浼氳╀綘閫夋嫨灝嗗浘鐗囧叿浣撴斁鍒板摢涓鏂囦歡澶逛笅
『叄』 android 屏幕適配
@[TOC](文章目錄)
<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">
# 前言
<font color=#999AAA >使用工具Android studio,利用values文件下dimens.xml界面適配安卓屏幕</font>
<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">
<font color=#999AAA >提示:以下是本篇文章正文內容,下面案例可供參考
# 一、概念
1.屏幕解析度單位是px,例如Android手機常見的解析度:320x480px、480x800px、720x1280px、1080x1920px。
2.手機屏幕的密度:每英寸的像素點數,單位是dpi。
| 密度類型 |代表的解析度(px)| 屏幕像素密度(dpi) | 1dp轉換為px |
|:--------|:--------|:--------|:--------|
| 低密度(ldpi) |240x320|120|0.75|
| 中密度(mdpi) |320x480|160|1|
| 高密度(hdpi)|480x800|240| 1.5|
| 超高密度(xhdpi)|720x1280|320|2|
| 超超高密度(xxhdpi) |1080x1920|480|3|
3.由於android的機型屏幕大小品類太多了,有一些是不標準的,這時我們就需要單獨去獲取屏幕的解析度和密度了。
# 二、獲取屏幕的解析度和密度
```java
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
float density = displayMetrics.density;
int densityDpi = displayMetrics.densityDpi;
int width = displayMetrics.widthPixels;
int height = displayMetrics.heightPixels;
Log.e("123","密度:"+density+"---"+densityDpi);
Log.e("123","屏幕解析度:"+width+"x"+height);
Log.e("123","安卓系統:"+android.os.Build.VERSION.RELEASE);
Log.e("123","手錶型號:"+android.os.Build.PRODUCT);
```
# 三、SmallestWidth適配
**smallestWidth適配,或者叫sw限定符適配。指的是Android會識別屏幕可用高度和寬度的最小尺寸的dp值(其實就是手機的寬度值),然後根據識別到的結果去資源文件中尋找對應限定符的文件夾下的資源文件。**
**sw計算公式:sw = 屏幕寬度 / (dpi/160) 註:160是默認的**
**例如:屏幕寬度為1080px、480dpi 的sw = 1080/(480/160)**
# 四、生成 dimens 文件
1、 首先在 res 目錄下新建各種尺寸的 values 文件 。文件名為:values-sw(你要適配屏幕的sw值)dp。
例如:
![code23](https://img-blog.csdnimg.cn/2020111311092374.PNG#pic_center)
注意:values文件下也生成 dimens文件
**生成dimens值工具類**
1、先生成標準的值。//value = (i + 1) * 1;
2、再用生成其他的值。 //value = (i + 1) * 需要生成的sw值/標準的sw值;
例如:value = (i + 1) * 160 / 320;
```java
public static void genDimen() {
StringBuilder stringBuilder = new StringBuilder();
try {
double value;
for (int i = 0; i < 500; i++) {
//value = (i + 1) * 1; //這里控制對應轉換的值,如果是標准尺寸就一對一轉換
//value = (i + 1) * 需要生成的sw值/標準的sw值; //這里控制對應轉換的值
value = (i + 1) * 1
//value = (i + 1) * 160 / 320;
value = Math.round(value * 100) / 100;
//dp可改成sp
stringBuilder.append("<dimen name=\"size_" + (i + 1) + "\">" + value + "dp</dimen>\r\n");
}
if (stringBuilder.length() > 4000) {
for (int i = 0; i < stringBuilder.length(); i += 4000) {
if (i + 4000 < stringBuilder.length())
Log.e("123", stringBuilder.substring(i, i + 4000));
else
Log.e("123", stringBuilder.substring(i, stringBuilder.length()));
}
} else {
Log.e("123", stringBuilder.toString());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
```
示例:(我這是以sw320為適配的標準的,你們可改自己的標准)
1、sw320的樣例
```java
<resources>
<dimen name="dimen_1">1.0dp</dimen>
<dimen name="dimen_2">2.0dp</dimen>
<dimen name="dimen_3">3.0dp</dimen>
<dimen name="dimen_4">4.0dp</dimen>
<dimen name="dimen_5">5.0dp</dimen>
<dimen name="dimen_6">6.0dp</dimen>
<dimen name="dimen_7">7.0dp</dimen>
<dimen name="dimen_8">8.0dp</dimen>
<dimen name="dimen_9">9.0dp</dimen>
<dimen name="dimen_10">10.0dp</dimen>
<dimen name="size_1">1.0sp</dimen>
<dimen name="size_2">2.0sp</dimen>
<dimen name="size_3">3.0sp</dimen>
<dimen name="size_4">4.0sp</dimen>
<dimen name="size_5">5.0sp</dimen>
<dimen name="size_6">6.0sp</dimen>
<dimen name="size_7">7.0sp</dimen>
<dimen name="size_8">8.0sp</dimen>
<dimen name="size_9">9.0sp</dimen>
<dimen name="size_10">10.0sp</dimen>
</resources>
```
2、sw160的樣例
```java
<resources>
<dimen name="dimen_1">0.0dp</dimen>
<dimen name="dimen_2">1.0dp</dimen>
<dimen name="dimen_3">1.0dp</dimen>
<dimen name="dimen_4">2.0dp</dimen>
<dimen name="dimen_5">2.0dp</dimen>
<dimen name="dimen_6">3.0dp</dimen>
<dimen name="dimen_7">3.0dp</dimen>
<dimen name="dimen_8">4.0dp</dimen>
<dimen name="dimen_9">4.0dp</dimen>
<dimen name="dimen_10">5.0dp</dimen>
<dimen name="size_1">0.0sp</dimen>
<dimen name="size_2">1.0sp</dimen>
<dimen name="size_3">1.0sp</dimen>
<dimen name="size_4">2.0sp</dimen>
<dimen name="size_5">2.0sp</dimen>
<dimen name="size_6">3.0sp</dimen>
<dimen name="size_7">3.0sp</dimen>
<dimen name="size_8">4.0sp</dimen>
<dimen name="size_9">4.0sp</dimen>
<dimen name="size_10">5.0sp</dimen>
</resources>
```
3、xml界面控制項使用樣例
```java
<TextView
android:layout_width="@dimen/dimen_30"
android:layout_height="@dimen/dimen_30"
android:textSize="@dimen/size_20"
android:layout_margin="@dimen/dimen_10"
android:padding="@dimen/dimen_10">
```
<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">
# 總結
<font color=#999999 >提示:這里對文章進行總結:
如果你的app需要適配dpi較低的屏幕,最好以最小dpi的sw為適配的標准。
『肆』 如何處理與Android XLARGE屏幕
一、關於布局適配建議 1、不要使用絕對布局 2、盡量使用match_parent 而不是fill_parent 。 3、能夠使用權重的地方盡量使用權重(android:layout_weight) 4、如果是純色背景,盡量使用android的shape 自定義。 5、如果需要在特定解析度下適配,可以在res目錄上新建layout-HxW.xml的文件夾。比如要適配1080*1800的屏幕(魅族MX3採用此解析度)則新建layout-1800x1080.xml的文件夾,然後在下面定義布局。Android系統會優先查找解析度相同的布局,如果不存在則換使用默認的layout下的布局。 二、術語和概念 四種屏幕尺寸分類:: small, normal, large, and xlarge 四種密度分類: ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high) 需要注意的是: xhdpi是從 Android 2.2 (API Level 8)才開始增加的分類. xlarge是從Android 2.3 (API Level 9)才開始增加的分類. DPI是「dot per inch」的縮寫,每英寸像素數。 一般情況下的普通屏幕:ldpi是120,mdpi是160,hdpi是240,xhdpi是320。 三、如何做到自適應屏幕大小呢? 1)界面布局方面 需要根據物理尺寸的大小准備5套布局,layout(放一些通用布局xml文件,比如界面中頂部和底部的布局,不會隨著屏幕大小變化,類似windos窗口的title bar),layout-small(屏幕尺寸小於3英寸左右的布局),layout-normal(屏幕尺寸小於4.5英寸左右),layout-large(4英寸-7英寸之間),layout-xlarge(7-10英寸之間) 2)圖片資源方面 需要根據dpi值准備5套圖片資源,drawable,drawalbe-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi Android有個自動匹配機制去選擇對應的布局和圖片資源 四、兩種獲取屏幕解析度信息的方法: DisplayMetrics metrics = new DisplayMetrics(); Display display = activity.getWindowManager().getDefaultDisplay(); display.getMetrics(metrics); //這里得到的像素值是設備獨立像素dp //DisplayMetrics metrics=activity.getResources().getDisplayMetrics(); 這樣獲得的參數信息不正確,不要使用這種方式。 不能使用android.content.res.Resources.getSystem().getDisplayMetrics()。這個得到的寬和高是空的。
『伍』 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值。
『陸』 android關於幾個drawable文件夾的區別
◆drawable—hdpi,放置高解析度的圖片素材(實際的開發過程這個最重要,一般都放置到該路徑下)如WVGA (480x800),FWVGA (480x854)
◆drawable—mdpi,放置中等解析度的圖片 如HVGA (320x480)
◆drawable—ldpi,放置低解析度的圖片 如QVGA (240x320)
◆drawable—xhdpi,至少960*720
★Android系統能夠根據手機的解析度,自動載入對應文件夾的圖片
希望能幫到你。
『柒』 安卓手機app圖標尺寸和解析度都是多少
應用程序圖標 (Icon)應當是一個 Alpha 通道透明的32位 PNG 圖片。
由於安卓設備眾多,一個應用程序圖標需要設計幾種不同大小,如:
LDPI (Low Density Screen,120 DPI),其圖標大小為 36 x 36 px。
MDPI (Medium Density Screen, 160 DPI),其圖標大小為 48 x 48 px。
HDPI (High Density Screen, 240 DPI),其圖標大小為 72 x 72 px。
xhdpi (Extra-high density screen, 320 DPI),其圖標大小為 96 x 96 px。
建議在設計過程中,在四周空出幾個像素點使得設計的圖標與其他圖標在視覺上一致,例如:
96 x 96 px 圖標可以畫圖區域大小可以設為 88 x 88 px, 四周留出4個像素用於填充(無底色)。
72 x 72 px 圖標可以畫圖區域大小可以設為 68 x 68 px, 四周留出2個像素用於填充(無底色)。
48 x 48 px 圖標可以畫圖區域大小可以設為 46 x 46 px, 四周留出1個像素用於填充(無底色)。
36 x 36 px 圖標可以畫圖區域大小可以設為 34 x 34 px, 四周留出1個像素用於填充(無底色)。
(7)androidxhdpi擴展閱讀:
手機圖標就像電腦圖標一樣,是一個程序的標記。如:照相機、設置、信箱、通訊錄等。
通常為透明背景的圖片如PNG格式。在手機中一半內置的圖標都是經過美化的,後來安裝的軟體由於是個人製作,一定程度上不是那麼完美,包括大小、 尺寸、比例等等,如果嫌不美觀, 可以到安裝目錄比對標準的圖標尺寸然後替換,用PHOTOSHOP或者其他繪圖軟體工具製作。
注意:一定要名稱一樣,格式一樣或者修改安裝表文件,指向你所更換的圖標文件,起到一定的美化作用。同時手機圖標要有一定的共同性,便於不同品牌的圖標的圖標功能相近性,便於使用。
手機圖標製作:
一、主題風格:
做手機圖標先要定好主題,風格,以及表現方式,如:簡潔大方;古樸厚重;晶瑩剔透;是寫實的3D圖標還是平面化的圖標。這一環是和整個交互界面密不可分的。
二、選定軟體:
根據風格定位,可以確定出是用哪種方法:用max建模>渲染>ps處理;用ps直接表現;用AI繪出>再經ps處理(推薦)易修改大小以及之後的調整。
三、注意要點:
由於AI是矢量軟體,可以很好的表現出畫面圖標的細節,尤其是復雜形體的表現,性能遠遠高於PS去製作,還有一個原因就是在製作手機圖標時圖標的大小都是很明確的,對於一些級小的細節AI很有優勢,如果ps的話不易畫出,如果放大製作,再縮小的話,會模糊掉,顯得邊緣粗糙。
參考資料來源:網路 手機圖標