当前位置:首页 » 安卓系统 » 安卓如何识别屏幕信息

安卓如何识别屏幕信息

发布时间: 2023-01-06 08:33:55

⑴ 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为适配的标准。

安卓手机检查屏幕亮点指令

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、首先需要点击“设置”这个应用。

注意事项:

校准屏幕主要是早期的电阻屏手机上的才需要用到的,目前较新的手机均采用电容屏,不需要校准屏幕的。

如果用户使用的电阻屏安卓手机,用户需要在设置——显示目录下找到屏幕校准选项,进入后,按手机提示点击指定位置即可。

热点内容
c语言16进制表示方法 发布:2025-05-17 13:11:25 浏览:479
ftp单位 发布:2025-05-17 13:10:03 浏览:141
c语言编写n的阶乘 发布:2025-05-17 13:10:02 浏览:683
lockjava 发布:2025-05-17 13:02:08 浏览:310
只狼和看门狗哪个配置高 发布:2025-05-17 12:50:21 浏览:205
扁桃玩的服务器地址 发布:2025-05-17 12:18:25 浏览:511
u盘上传歌 发布:2025-05-17 12:14:51 浏览:615
入门c语言设计 发布:2025-05-17 12:08:31 浏览:41
c3算法 发布:2025-05-17 12:04:19 浏览:365
phprecv 发布:2025-05-17 11:55:00 浏览:616