zoukankan      html  css  js  c++  java
  • 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为单位。

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

  • 相关阅读:
    一致性哈希算法
    Discourse 的标签(Tag)只能是小写的原因
    JIRA 链接 bitbucket 提示错误 Invalid OAuth credentials
    JIRA 如何连接到云平台的 bitbucket
    Apache Druid 能够支持即席查询
    如何在 Discourse 中配置使用 GitHub 登录和创建用户
    Apache Druid 是什么
    Xshell 如何导入 PuTTYgen 生成的 key
    windows下配置Nginx支持php
    laravel连接数据库提示mysql_connect() :Connection refused...
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4757534.html
Copyright © 2011-2022 走看看