• Android 多分辨率机适应


    如果你有一台机器,如以下决议:

    800 x 480

    1024 x 600

    1024 x 768

    1280 x 800

    1920 x 1200 

    2048 x 1536

    总共六种类分辨率机器,假设依照dp为单位来细分能够分为几种呢?

    首先通过context.getResources().getDisplayMetrics().density获取到当前机器的屏幕密度,然后通过dp = px/density进行换算能够得到机器相应的以dp为单位的大小。比方。我分别打出了自己手里面设备相应的dp,值例如以下:

    设备px大小

    设备屏幕密度dpi

    设备dp大小

    相应的最小宽度

    800 x 480

    1

    800 x 480

    Sw480dp

    1024 x 600

    1

    1024 x 600

    Sw600dp

    1024 x 768

    1

    1024 x 768

    Sw720dp

    1280 x 800 

    1,另外一台机器是1.5

    1280 x 800 另外一台是853 x 533

    Sw720dp 另外一台是Sw480dp

    1920 x 1200 

    1.5

    1280 x 800

    Sw720dp

    2048 x 1536

    2

    1024 x 768

    Sw720dp

                                                                      表一 设备dp 最小宽度描写叙述表

    关于最小宽度的概念能够看以下描写叙述:

             屏幕的基本尺寸,是指最短的可用屏幕区域。

    详细的说,设备的最小宽度是屏幕可用的宽度和高度中最短的那个(也能够把它看做是屏幕的最小可能的宽度)。这样就能够使用这个限定符来确保应用程序至少有<N>dp的宽度可用于UI界面。而无论屏幕的当前方向。

    比如。假设布局在不论什么时候都须要至少600dp的最小屏幕尺寸,那么就行使用这个限定符,在res/layout-sw600dp/文件夹中创建布局资源。

    系统仅仅会在可用屏幕的尺寸至少是600dp的时候才会使用这些资源。而无论600dp是否是被用户认知的高度或宽度。

    最小宽度是设备的固定屏幕尺寸特征。当屏幕的方向发生改变时,设备的最小宽度不改变。

    设备的最小宽度须要考虑屏幕的装饰和系统UI的占用。比如,假设设备有一些固定的UI元素要沿着最小宽度的轴向。占用一定的屏幕空间。那么系统声明的最小宽度要比实际的屏幕尺寸要小。由于被系统占用的像素部分对用户应用程序的UI无效。因此。这个值应该是应用程序布局所须要的最小的实际尺寸(通常,这个值是布局支持的最小宽度,而无论屏幕的当前方向)。

    下面是能够使用的通用屏幕尺寸的一些值:1.320,针对下面屏幕配置的设备:

      240x320ldpiQVGA手持设备)

      320x480mdpi(手持设备)

      480x800hdpi(高分辨率手持设备)

    2.480。针对480x800mdpi的屏幕(平板或手持设备)

    3.600。针对600x1024mdip的屏幕(7英寸平板)

    4.720,针对720x1280mdip的屏幕(10英寸平板)

    当应用程序提供了多个带有不同值的最小宽度限定符资源文件夹时,系统会使用最接近(不超出)设备最小宽度的那个资源。

    这个限定符被加入在API级别13中。

    还要看android:requiresSmallestWidthDp属性。它声明了与你的应用程序兼容的最小的最小宽度。而且smallestScreenWidthDp配置字段会持有这个设备最小宽度的值。

            从表一能够看到。七个设备、六种分辨率相应了三中最小宽度,因此我们适配了这几种不同 最小宽度的情况就能够完毕对上面全部机型的适配。如何依据最小宽度来适配不同机型呢?事实上非常easy,仅仅须要自己定义以下几个目录里面的文件就能够了。

    res/layout-sw320dp

    res/layout-sw480dp

    res/layout-sw600dp

    res/layout-sw720dp

    res/values-sw320dp

    res/values-sw480dp

    res/values-sw600dp

    res/lvalues-sw720dp

    举个样例。假如我在做第一款机器的时候。全部的UI尺寸都是以720dp的机器来配置的,那么相应到最小宽度为600dp的机器就应该是全部的尺寸大小除以1.2。相应到最小宽度为480dp的机器就应该是全部的尺寸大小除以1.5,依次类推。

    当然,前提是你在布局里面的尺寸都是用dp为单位,字体用sp或者dp为单位。

    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    JavaScript如何获取一个元素的样式信息
    Linux服务器命令行操作(小白专用)
    Linux云服务器搭建node环境
    C++ new和delete运算符简介
    C++中free()与delete的区别
    VS2017+Qt开发时打开命令调试窗口
    opencv4.2版本遇到CV_MINMAX未声明标识符
    CUDA 数据传输
    uchar 存为8位/16位图像(QImage)
    Qt Creator删除toolbar中多余的“分隔符”
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4757534.html
Copyright © 2020-2023  润新知