安卓如何識別屏幕信息
⑴ 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。
例如:

注意: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為適配的標准。
⑵ 安卓手機檢查屏幕亮點指令
1、*#*#4636#*#*,可以查看手機信息、電池信息、實用統計信息等,如圖。
⑶ 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
⑷ 安卓有自動識別手機屏幕文字並朗讀的軟體嗎
通常上安卓自帶此功能,以小米手機為例,打開此功能操作如下:
1、打開手機設置。
⑸ 安卓手機,屏幕測試 , 多點觸摸測試,怎麼用能正確判斷觸屏是好的看下圖,
安卓手機屏幕測試 , 多點觸摸測試判斷觸屏是好壞的方法如下:
1、首先,我們點擊打開手機,然後我們可以看到〔撥號界面〕,我們可以在〔撥號界面〕撥打〔*#*#6484#*#*〕。
⑹ 安卓手機如何區分屏幕觸控
安卓手機區分屏幕觸控,打開多點觸控,就可以了。
解答如下:
1、進入魯大師應用界面。點擊軟體右下方工具箱。工具箱頁面下滑可以看到有一個屏幕檢測功能項,直接輸入號MA的如何查找定位他人位置隨時找到他,
2、進入屏幕檢測功能,手機屏幕有四個檢測項目,多點觸控檢測排在第三位,擊進入,開始檢測-點擊屏幕開始,
3、在檢測窗口,使用五個手指進行屏幕觸控,檢測結果出來了。
⑺ 安卓手機怎麼校準屏幕
解決方法:(以魅族手機為例)
1、首先需要點擊「設置」這個應用。
注意事項:
校準屏幕主要是早期的電阻屏手機上的才需要用到的,目前較新的手機均採用電容屏,不需要校準屏幕的。
如果用戶使用的電阻屏安卓手機,用戶需要在設置——顯示目錄下找到屏幕校準選項,進入後,按手機提示點擊指定位置即可。