当前位置: 首页 > news >正文

溧阳建设工程监理网站/软文营销代理

溧阳建设工程监理网站,软文营销代理,武汉企业建站系统模板,四川网络推广推广机构目录 一、为什么要适配 二、几个重要的概念 2.1 屏幕尺寸 2.2 屏幕分辨率 2.3 屏幕像素密度 2.4 屏幕尺寸、分辨率、像素密度三者关系 三、常用单位 3.1 密度无关像素(dp) 3.2 独立比例像素(sp) 3.3 dp与px的转换 四、解决方案 4.1 今日头条…

目录

一、为什么要适配

二、几个重要的概念

2.1 屏幕尺寸

2.2 屏幕分辨率

2.3 屏幕像素密度

2.4 屏幕尺寸、分辨率、像素密度三者关系

三、常用单位

3.1 密度无关像素(dp)

3.2 独立比例像素(sp)

3.3 dp与px的转换

四、解决方案

4.1 今日头条

4.2 ScreenMatch适配

4.2.1 下载插件

4.2.2 使用

4.2.3 「自定义values文件」

4.3 选择适配方案->今日头条

官方文档-屏幕兼容性概览


一、为什么要适配

        由于Android系统的开放性,OEM厂商、运营商都可以对Android进行定制,于是导致运行 Android 的设备多种多样,它们有着不同的屏幕尺寸和像素密度。

        尽管系统可通过基本的缩放和调整大小功能使界面适应不同屏幕,但你应做出进一步优化,以确保界面能够在各类屏幕上美观地呈现。

        例如UI以375px宽度来设计,如果你直接使用1dp=1px的这种方式来写代码,那么在不同屏幕的手机上面的显示可能是不一样的,这就需要你来做适配。

二、几个重要的概念

2.1 屏幕尺寸

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

比如常见的屏幕尺寸有:4.7寸、5寸、5.5寸、6寸等。

        还有一些特殊屏幕尺寸,例如Redmi K40:6.67英寸。

        这个一般在设置关于手机中查看自己的屏幕尺寸。

2.2 屏幕分辨率

        屏幕分辨率是指在横纵向上的像素点数,单位是px,1px=1个像素点。一般以「纵向像素x横向像素,如1080x2400」。表示宽度方向上有1080个像素点,在高度方向上有2400个像素点

单位:px(pixel),1px=1像素点。

Android手机常见的分辨率:480x800、720x1280、1080x1920

UI设计师的设计图会以px作为统一的计量单位

2.3 屏幕像素密度

        屏幕像素密度是指每英寸上的像素点数,单位是dpi,即"dot per inch"的缩写。

        屏幕像素密度与屏幕尺寸和屏幕分辨率有关,在单一变化条件下,屏幕尺寸越小、分辨率越高,像素密度越大,反之越小。

假设设备内每英寸有160个像素,那么该设备的屏幕像素密度=160dpi

        安卓手机对于每类手机屏幕大小都有一个相应的屏幕像素密度:

密度类型代表的分辨率(px)屏幕像素密度(dpi)
低密度(ldpi)240x320120
中密度(mdpi)320x480160
高密度(hdpi)480x800240
超高密度(xhdpi)720x1280320
超超高密度(xxhdpi)1080x1920480

2.4 屏幕尺寸、分辨率、像素密度三者关系

        像素密度(dpi) =宽高/屏幕大小。

        例如:屏幕分辨率为1080x2400,屏幕尺寸为6.67来计算。

        1. 像素密度(dpi) = / 6.67

        2. 像素密度(dpi) = 6926400 / 6.67

        3. 394.573532825 = 6926400 / 6.67

「即:每寸越有395个像素」

三、常用单位

3.1 密度无关像素(dp)

        density-independent pixel,叫dp或dip,与终端上的实际物理像素点无关。可以保证在不同屏幕像素密度的设备上显示相同的效果

         Android开发时用dp而不是px单位设置图片大小,是Android特有的单位

        场景:假如同样都是画一条长度是屏幕一半的线,如果使用px作为计量单位,那么在480x800分辨率手机上设置应为240px;在320x480的手机上应设置为160px,二者设置就不同了;如果使用dp为单位,在这两种分辨率下,160dp都显示为屏幕一半的长度。

3.2 独立比例像素(sp)

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

3.3 dp与px的转换

        在Android中,规定以160dpi(即屏幕分辨率为320x480)为基准:1dp=1px。

        px = dp * (dpi / 160)

密度类型代表的分辨率(px)屏幕密度(dpi)换算(px/dp)比例
低密度(ldpi)240x3201201dp=0.75px3
中密度(mdpi)320x4801601dp=1px4
高密度(hdpi)480x8002401dp=1.5px6
超高密度(xhdpi)720x12803201dp=2px8
超超高密度(xxhdpi)1080x19204801dp=3px12

四、解决方案

4.1 今日头条

        px值 = dp值 * metrics.density,这里的density是指的手机的屏幕密度,由系统提供,不同的手机的density可能不同;所以我们不能直接使用系统的density,需要篡改density来达到适配的目的

public class MainActivity extends AppCompatActivity {private static float sNoncompatDensity;// 系统的Densityprivate static float sNoncompatScaleDensity;// 系统的ScaledDensityprivate static void setCustomDensity(Activity activity, final Application application){final DisplayMetrics appDisplayMetrics = application.getResources().getDisplayMetrics();if(sNoncompatDensity == 0){// 系统的DensitysNoncompatDensity = appDisplayMetrics.density;// 系统的ScaledDensitysNoncompatScaleDensity = appDisplayMetrics.scaledDensity;// 监听在系统设置中切换字体application.registerComponentCallbacks(new ComponentCallbacks() {@Overridepublic void onConfigurationChanged(@NonNull Configuration newConfig) {if(newConfig != null && newConfig.fontScale > 0){sNoncompatScaleDensity = application.getResources().getDisplayMetrics().scaledDensity;}}@Overridepublic void onLowMemory() {}});}// 此处以360dp的设计图作为例子final float targetDensity = appDisplayMetrics.widthPixels / 360;final float targetScaledDensity = targetDensity * (sNoncompatScaleDensity/sNoncompatDensity);final int targetDensityDpi = (int)(160 * targetDensity);appDisplayMetrics.density = targetDensity;appDisplayMetrics.scaledDensity = targetScaledDensity;appDisplayMetrics.densityDpi = targetDensityDpi;final DisplayMetrics activityDisplayMetrics = activity.getResources().getDisplayMetrics();activityDisplayMetrics.density = targetDensity;activityDisplayMetrics.scaledDensity = targetScaledDensity;activityDisplayMetrics.densityDpi = targetDensityDpi;}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setCustomDensity(this,this.getApplication());setContentView(R.layout.activity_main);}
}

4.2 ScreenMatch适配

        Android ScreenMatch屏幕适配是一种简单适用的适配方式,是由Android官方推出的适配方法

4.2.1 下载插件

4.2.2 使用

        之后会有选择项目的界面,选择你想在哪个项目中使用ScreenMatch。

        根据你选择的尺寸来生成对应的values,默认有一大堆。

4.2.3 自定义values文件

在screenMatch.properties中你需要关注:

  • 1.base_dp:若base_dp=360这种机型在你项目中就不可能有,你完全可以根据你项目中的基础机型来配置这个基础base_dp。我这是UI用的375,所以此处改为375。

  • 2.match_dp和ignore_dp要配合使用:

    • match_dp:需要的尺寸

    • ignore_dp:忽略的尺寸

所有尺寸在红框上方的注解里面有。

4.3 选择适配方案->今日头条

  • 1.快捷方便

  • 2.后期维护调整也省事

  • 3.包体小

官方文档-屏幕兼容性概览

相关文章:

Android 屏幕适配

目录 一、为什么要适配 二、几个重要的概念 2.1 屏幕尺寸 2.2 屏幕分辨率 2.3 屏幕像素密度 2.4 屏幕尺寸、分辨率、像素密度三者关系 三、常用单位 3.1 密度无关像素(dp) 3.2 独立比例像素(sp) 3.3 dp与px的转换 四、解决方案 4.1 今日头条…...

Python使用Mechanize库完成自动化爬虫程序

目录 引言 一、了解Mechanize库 二、安装Mechanize库 三、使用Mechanize库发送HTTP请求 四、使用Mechanize库解析HTML页面 五、使用Mechanize库模拟用户输入 六、使用Mechanize库处理JavaScript动态生成的内容 七、使用Mechanize库处理登录和表单提交的常见问题 总结 …...

【Shell脚本入门】

Shell中的特殊符号 1.$ 美元符号,用来表示变量的值。 如变量NAME的值为Mike,则使用$NAME就可以得到“Mike”这个值。2.# 井号,除了做为超级用户的提示符之外,还可以在脚本中做为注释的开头字母,每一行语句中&#xff…...

redis大全

redis-cli 常用命令 redis常用命令 redis数据结构 redis数据结构 redis持久化存储 持久化存储 redis事务 redis事务 redis管道 管道 redis7集群搭建 集群 redis常见问题以及解决方案 常见问题以及解决方案 redis面试题 面试题 redis高级案列case 高级case sp…...

linux rsyslog日志采集格式设定五

linux rsyslog日志采集格式设定五 1.创建日志接收模板 打开/etc/rsyslog.conf文件,在GLOBAL DIRECTIVES模块下任意位置添加以下内容 命令: vim /etc/rsyslog.conf 测试:rsyslog.conf文件结尾添加以下内容 $template ztj,"%fromhost-ip% %app-name% %syslogseveri…...

uni-app:如何配置uni.request请求的超时响应时间(全局+局部)

方法一:全局配置响应时间 一、进入项目的manifest.json的代码视图模块 二、写入代码 "networkTimeout": {"request": 5000 }, 表示现在request请求响应时间最多位5秒 方法二:局部设置响应时间 一、直接在uni.request中写入属性…...

AI中文版怎么用,版本分享,GPT官网入口

网页版上线啦,在线助力大学生、上班族的高效生活! GPT4.0是OpenAI最新推出的聊天模型,它的语言理解和生成能力比以前的版本更强大。对于忙碌的上班族来说,GPT4.0能帮助你高效处理工作中的大部分写作任务,比如撰写报告…...

mysql数据库通过binlog恢复数据

1:通过命令查询是否开启 show variables like log_bin2:查看binlog文件存放目录 show variables like %datadir%3:通过positon恢复 mysqlbinlog --start-position219 --stop-position636 --databasetest "/data/binlog.00001" …...

【unity插件】UGUI的粒子效果(UI粒子)—— Particle Effect For UGUI (UI Particle)

文章目录 前言插件地址描述特征Demo 演示如何玩演示对于 Unity 2019.1 或更高版本对于 Unity 2018.4 或更早版本 用法基本上是用法使用您现有的 ParticleSystem 预制件带 Mask 或 RectMask2D 组件脚本用法UIParticleAttractor 组件开发说明常见问题解答:为什么我的粒…...

高教社杯数模竞赛特辑论文篇-2023年C题:基于历史数据的蔬菜类商品定价与补货决策模型(附获奖论文及R语言和Python代码实现)(中)

目录 六、 问题三模型建立与求解 6.1 问题三求解思路 6.2 问题三模型建立 6.2.1 模型假定和预处理...

element-ui plus 文件上传组件,设置单选,并支持替换和回显

遇到的坑: 1、设置limit属性为1后,on-change属性不生效 2、on-exceed属性虽然值改变,但是回显没有随之变化 3、由于element-ui plus版本file-list值出现问题 最后的解决方案决定不设置 limit 属性,通过 on-change 中的判断来控制数…...

ZYNQ7000---FLASH读写

提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Flash是什么?二、Flash的分类1、内部结构(接口)区分:2、外部接口区分:SPIQPSI Flash: QSPI 控制…...

SpringMVC log4j1升级log4j2

整个升级过程耗时5个小时,中间耗时最长的是找合适的包和升级后日志无法打印以及无法控制日志输出位置,完成后感觉其实很简单,如果一开始就能看到我现在写的笔记,可能几分钟就搞定了。 第一步:首先上log4j2所需要的包 …...

MATLAB算法实战应用案例精讲-【图像处理】机器视觉(基础篇)(十一)

目录 几个相关概念 1、焦点(focus) 2、弥散圆(circle of confusion) 3、景深(depth of field) 知识储备 线阵相机...

UE的PlayerController方法Convert Mouse Location To World Space

先上图: Convert Mouse Location To World这是PlayerController对象中很重要的方法。 需要说明的是两个输出值。 第一个是World Location,这是个基于世界空间的位置值,一开始我以为这个值和当前摄像机的位置是重叠的,但是打印出来…...

【Qt之QStandardItemModel】使用,tableview、listview、treeview设置模型

1. 引入 QStandardItemModel类提供了一个通用的模型,用于存储自定义数据。 以下是其用法:该类属于gui模块,因此在.pro中,需添加QT gui,如果已存在,则无需重复添加。 首先,引入头文件&#xff…...

mongodb 6/7的 windows安装问题

https://cloud.tencent.com/developer/article/2205068...

网站建设所需要的主要资源相关介绍

人力资源: 网站开发人员:前端开发、后端开发、UI/UX设计师等。 内容创作者:负责编写网站内容,包括文章、图片和视频。 项目经理:协调团队工作,确保项目按计划进行。 数字营销:帮助推广和市场…...

互联网上门预约洗衣洗鞋店小程序;

拽牛科技干洗店洗鞋店软件,方便快捷,让你轻松洗衣。只需在线预约洗衣洗鞋服务,附近的门店立即上门取送,省心省力。轻松了解品牌线下门店,通过列表形式展示周围门店信息,自动选择最近门店为你服务。简单填写…...

OSPF开放最短路径优先(Open Shortest Path First)协议

OSPF开放最短路径优先(Open Shortest Path First)协议 为克服RIP的缺点(限制网络规模,坏消息传得慢)在1989年开发出来的原理很简单,但实现很复杂使用了Dijkstra提出的最短路径算法SPF(Shortest Path First)采用分布式的链路状态协议(link state protoco…...

数据结构(c语言版本) 字符串操作

作业要求 创建字符串插入、字符串、字符定位、求字串、删除某个字符、替换某个字符串、合并两个字符串 代码实现 #include <stdio.h> #include <string.h> #define MAXSIZE 100//定义结构体 struct SeqString{char data[MAXSIZE];int charlen; };//初始化 void …...

【Pyqt5】windows和linux安装Pyqt5+designer

原文作者&#xff1a;我辈李想 版权声明&#xff1a;文章原创&#xff0c;转载时请务必加上原文超链接、作者信息和本声明。 文章目录 一、windows安装二、linux安裝linux 安装pyqt5 designer 一、windows安装 PyCharm安装PyQt5及其工具&#xff08;Qt Designer、PyUIC、PyRcc…...

【FPGA】Verilog:升降计数器 | 波纹计数器 | 约翰逊计数器 | 实现 4-bit 升降计数器的 UP/DOWN

目录 Ⅰ. 理论部分 0x00 升降计数器&#xff08;UP DOWN Counter&#xff09; 0x01 波纹计数器&#xff08;Ripple Counter&#xff09; 0x02 约翰逊计数器&#xff08;Johnson Counter&#xff09; Ⅱ. 实践部分 0x00 实现&#xff1a;升降计数器&#xff08;4-bit&…...

使用uniapp写小程序,真机调试的时候不显示log

项目场景&#xff1a; 当小程序文件太大的情况下使用真机调试&#xff0c;但是真机调试的调试器没有任何反应 问题描述 使用uniapp写小程序&#xff0c;真机调试的时候不显示log 原因分析&#xff1a; 提示&#xff1a;因为真机调试的时候没有压缩文件&#xff0c;所以调试的…...

hive数据库delete删除部分数据/删除分区内的数据

Hive delete 删除部分数据 一、hive删除数据1.1、删除整个表1.2、删除表中的特定行1.3、删除表中的特定分区1.4、删除分区内的部分数据1.5、清空表中的所有数据 二、扩展2.1、dynamic partition on Crud si not disabled, please set hive.crud.dynamic.partitiontrue to enabl…...

C/C++条件编译:#ifdef、#else、#endif等

文章目录 #undef指令从C预处理器角度看已定义条件编译1.#ifdef、#else和#endif指令 #ifndef指令#ifndef指令通常用于防止多次包含一个文件程序使用#ifndef避免文件被重复包含 #if和#elif指令条件编译还有一个用途是让程序更容易移植 参考 程序员可能要为不同的工作环境准备C程序…...

基于51单片机步进电机节拍步数正反转LCD1602显示( proteus仿真+程序+原理图+设计报告+讲解视频)

基于51单片机步进电机节拍步数正反转LCD1602显示 &#x1f4d1;1. 主要功能&#xff1a;&#x1f4d1;2. 讲解视频&#xff1a;&#x1f4d1;3. 仿真&#x1f4d1;4. 程序代码&#x1f4d1;5. 设计报告&#x1f4d1;6. 设计资料内容清单&&下载链接&#x1f4d1;[资料下…...

Vim 从何而来?

Vim 编辑器的创造者、维护者和终身领导者 Bram Moolenaar 为了纪念这位杰出的荷兰程序员&#xff0c;我们今天来聊一聊 Vim 的历史。 Vim 无处不在。它被很多人使用。同时 Vim 可能是世界上 “最难用的软件之一” &#xff0c;但是又多次被程序员们评价为 最受欢迎的 代码编辑…...

Auto.js 清除指定应用缓存

本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删!Auto.js 清除指定应用缓存 环境 win10Pixel4Android13var packageName = ""; // 包名 var resu…...

[EFI]Surface Pro 4电脑 Hackintosh 黑苹果引导文件

硬件型号驱动情况主板Surface Pro 4处理器Intel Core i5-6300U 2.5GHz已驱动内存16GB DDR4 2400Mhz已驱动硬盘Samsung SSD 860 EVO 250G Media (Install on SSD External)已驱动显卡Intel HD Graphics 520 2GBmacOS 13以上自行添加显卡补丁声卡Realtek ALC3269&#xff08;id 3…...