zoukankan      html  css  js  c++  java
  • android 屏幕

    1.为什么适配

    (1) 厂商多,设备多, 屏幕的尺寸, 分辨率多.

    (2) 大多数的计算方式:

        dpi等于(屏幕宽的平方+屏幕高的平方)整体开根号(单位是px),然后除以屏幕尺寸(单位是英寸).

        density=dpi/160,

        px=density*dp.(我们通常用的是dp去适配,但是绘制view的最终单位都是px,也就是因为dp和px之间的转换导致了适配的不完全)

        因为dpi是由屏幕真实的分辨率和尺寸得来的.

        注:一些手机并不是这种规范的计算方式,导致适配更加复杂.

    2.基础知识

    (1) 屏幕尺寸: 屏幕尺寸指屏幕的对角线的长度(物理长度),单位是英寸,1英寸=2.54厘米

    (2) 屏幕分辨率(屏幕宽高): 屏幕分辨率是指在纵横向上的像素点数,单位是px,1px=1个像素点。一般以纵向像素*横向像素,如480*320。

    (3) 屏幕像素密度(单位dpi):  计算方式->(屏幕宽的平方+屏幕高的平方)整体开根号(单位是px),然后除以屏幕尺寸,就是屏幕分辨率勾股求对角线然后除以尺寸

    (4) density:屏幕的逻辑密度,是密度无关像素(dp)的缩放因子,160dpi是系统屏幕显示的基线,1dip = 1px

                   density=dpi/160, 

                  160为标准屏幕像素密度

    (5) px:像素,基本单位,绘制view的最终单位都是px

    (6) dp/dip:密度无关像素

    (7) sp,即scale-independent pixels,与dp类似,但是可以根据文字大小首选项进行放缩,是设置字体大小的御用单位。

    3.方法

    A. 基本操作

    1wrap_content,match_parent

    2LinearLayout,RelativeLayout

    3图标使用svg格式(svg的图标大小约是png的1/4)

    4.weight

    5.layout-600x400

    6. .9图可指定拉伸区域

    a.限定符(layout-large):

    1尺寸:small,normal,large,xlarge

    2屏幕方向:land,port

    3屏幕宽高比:long(比标准屏幕宽高比明显的高或者宽的这样屏幕),notlong(和标准屏幕配置一样的屏幕宽高比)

    4屏幕的最小尺寸:屏幕可用区域的最小尺寸,是指屏幕可用高度或宽度的最小值(sw600dp)

    5屏幕可用宽度:指定资源使用时需要的最小宽度,当前是否需要显示多屏布局(w720dp)

    B.今日头条适配

    正常的公式:density=dpi/160,

    今日头条公式:当前设备屏幕总宽度(单位为像素)/ 设计图总宽度(单位为 dp) = density

    屏幕的总 px 宽度 / density = 屏幕的总 dp 宽度、

     所以屏幕的总 px 宽度=屏幕的总 dp 宽度

    C.smallestWidth(values-sw640dp)

    插件:ScreenMatch

    系统只会寻找小于或等于当前设备 最小宽度

    按照百分比缩放布局

    不区分屏幕方向的

    (如果想让屏幕宽度随着屏幕的旋转而做出改变(values-w640dp))

    (如果想区分屏幕的方向来做适配该怎么办呢?那就只有再根据 屏幕方向限定符 生成一套资源文件咯,后缀加上 -land-port 即可,像这样,values-sw400dp-land (最小宽度 400 dp 横向)values-sw400dp-port (最小宽度 400 dp 纵向))

    smallestWidth 限定符屏幕适配方案 只是把 dimens.xml 文件中的值从 px 换成了 dp,原理和使用方式都是没变的

          关注本人公众号获取更多干货.

     

  • 相关阅读:
    Thinkpad L440 无线驱动突然无法使用,无法搜索到无线上网
    如何判断服务器是物理机还是虚拟机
    生成Oracle的AWR报告
    Oracle数据库自带表空间
    Oracle数据库用户锁定原因以及处理方式(ORA-28000)
    Nginx反向代理和负载均衡
    Linux上Tomcat部署JavaWeb项目
    linux下memcached安装以及启动
    linux上安装activeMQ
    Windows下ActiveMQ下载、安装部署
  • 原文地址:https://www.cnblogs.com/wangandroid/p/11050780.html
Copyright © 2011-2022 走看看