導航:首頁 > 操作系統 > android獲取屏幕像素

android獲取屏幕像素

發布時間:2024-08-24 10:05:51

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獲取屏幕的解析度方法有幾種

獲取屏幕解析度的方式如下:

一、在activity中

1、DisplayMetrics dm = getResources().getDisplayMetrics();

int screenWidth = dm.widthPixels;

int screenHeight = dm.heightPixels;

2、DisplayMetrics dm = new DisplayMetrics();

this.getWindowManager().getDefaultDisplay().getMetrics(dm);

int screenWidth = dm.widthPixels;

int screenHeight = dm.heightPixels;

二、在service中

DisplayMetrics dm = new DisplayMetrics();

dm = getResources().getDisplayMetrics();

int screenWidth = dm.widthPixels;

int screenHeight = dm.heightPixels;

Ⅲ Android手機js獲取屏幕尺寸不準,導致計算的問題

Android中可以通過三種方式獲到屏幕大小:
1、通過WindowManager獲取
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
System.out.println("heigth : " + dm.heightPixels);
System.out.println("width : " + dm.widthPixels);

2、通過Resources獲取
DisplayMetrics dm2 = getResources().getDisplayMetrics();
System.out.println("heigth2 : " + dm2.heightPixels);
System.out.println("width2 : " + dm2.widthPixels);

3、通過Display 獲取屏幕的默認解析度
Display display = getWindowManager().getDefaultDisplay();
System.out.println("width-display :" + display.getWidth());
System.out.println("heigth-display :" + display.getHeight());

閱讀全文

與android獲取屏幕像素相關的資料

熱點內容
女孩子如何嫁給程序員 瀏覽:655
安卓的動畫響應為什麼卡 瀏覽:835
怎麼把axure放到伺服器上 瀏覽:847
元柱體的鋼材理論重量的便捷演算法 瀏覽:467
地平線4如何加密 瀏覽:277
淘寶游戲解壓神器 瀏覽:706
androidurl視頻 瀏覽:842
app什麼播放器好 瀏覽:13
網路機頂盒伺服器地址 瀏覽:568
程序員常用軟體下載網站 瀏覽:441
美顏照app哪個好用 瀏覽:287
農業銀行app轉款記錄怎麼清理 瀏覽:903
javastack類 瀏覽:735
安卓11本機內核編譯環境 瀏覽:5
phpstomp安裝 瀏覽:312
安卓手機如何不用密碼下軟體 瀏覽:559
安卓如何換機到新iphone 瀏覽:378
雲喇叭伺服器連接不上 瀏覽:791
雲手機助手連接伺服器失敗 瀏覽:695
電腦怎麼截屏放在文件夾中 瀏覽:264