屏幕适配方案

2023-11-09

屏幕dp px换算公式:
这里写图片描述

其中width、height为我们的手机屏幕宽高,即1920*1080;
inch为对角尺寸,常见5.5寸,5.0寸等;

    public void getAndroiodScreenProperty() {
        WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
        DisplayMetrics dm = new DisplayMetrics();
        wm.getDefaultDisplay().getMetrics(dm);

        int width = dm.widthPixels;         // 屏幕宽度(像素)
        int height = dm.heightPixels;       // 屏幕高度(像素)
        float density = dm.density;         // 屏幕密度(0.75 / 1.0 / 1.5)
        float scaledDensity = dm.scaledDensity;
        int densityDpi = dm.densityDpi;     // 屏幕密度dpi(120 / 160 / 240)
        // 屏幕宽度算法:屏幕宽度(像素)/屏幕密度
        int screenWidth = (int) (width / density);  // 屏幕宽度(dp)
        int screenHeight = (int) (height / density);// 屏幕高度(dp)


        Log.d("h_bl", "屏幕宽度(像素):" + width);
        Log.d("h_bl", "屏幕高度(像素):" + height);
        Log.d("h_bl", "屏幕密度(scaledDensity):" + scaledDensity);
        Log.d("h_bl", "屏幕密度(0.75 / 1.0 / 1.5):" + density);
        Log.d("h_bl", "屏幕密度dpi(120 / 160 / 240):" + densityDpi);
        Log.d("h_bl", "屏幕宽度(dp):" + screenWidth);
        Log.d("h_bl", "屏幕高度(dp):" + screenHeight);
    }

附加两篇文章介绍今日头条适配方案:
https://mp.weixin.qq.com/s/d9QCoBP6kV9VSWvVldVVwA

https://juejin.im/post/5b6250bee51d451918537021#heading-0

主要思路为修改在activity调用onreate()时修改DisplayMetrics的density、densityDpi、scaledDensity,当时这些预期期得前期计算好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

屏幕适配方案 的相关文章

  • Android 一加 6(Android 派版) 启动完成 广播接收器不工作

    Android 一加 6 Android 派版 启动完成 广播接收器不工作
  • 反应调试模式和正常模式之间的本机不同行为

    嗨 我有一个非常复杂的问题 所以我在 github 上为这个问题创建了一个新的存储库 所以你可以克隆它并看看问题是什么 https github com guitar9 hafas client example https github c
  • 在android中绘制单点触摸运动路径

    我正在尝试制作一个绘图应用程序 我想要绘制单点触摸运动路径在 android 中 就像 Swype 键盘的方式一样 因此我想存储每个像素的 x y 坐标将运动路径转化为数据结构 我如何使用 MotionEvent 指针来执行此操作 您可能不
  • startActivity 无法在 fcm 中的 onMessageReceived 内工作

    我知道有很多帖子讨论这个问题 我已经尝试了该线程上的几乎所有解决方案 但不幸的是这对我的情况不起作用 基本上 我想做的是 我想在之后立即开始一项活动onMessageReceived被调用而不发出通知 这是我的代码 override fun
  • Android + PhoneGap拦截URL(相当于iOS的shouldStartLoadWithRequest)

    我的 PhoneGap 包装的 本地托管的 Sencha Touch 应用程序会进行一些虚假的 URL 回调来与本机包装器进行通信 IE app callback do function a 在iOS中我实现了以下内容 BOOL webVi
  • 如果相关服务被终止,如何更新小部件?

    我有一个录音应用程序 目前正在为其开发一个小部件 录音是由在前台状态的服务中运行的音频引擎执行的 每当音频引擎状态更改为暂停 播放 录制时 就会发送广播 并由更新小部件的接收器进行处理 这样 单击小部件中的录制按钮就会开始录制 这会导致发送
  • 如何让 Meteor Cordova 应用程序允许访问域

    我刚刚做了流星更新 现在有版本 流星1 0 4 科尔多瓦4 2 0 我最近还使用 mup deploy 将我的服务器移动到数字海洋 我现在发现 虽然桌面和移动网站运行良好 但在 Android 移动应用程序中 图像不再加载 这些图像是公共
  • 如果没有连接 USB 电缆,ADB over TCP/IP 无法工作

    我可以使用 USB 电缆通过 ADB 连接到我的智能手机 我还可以通过 tcp ip 连接到同一智能手机 adb connect 192 168 1 110 同时 USB 电缆仍处于连接状态 但是 一旦我断开电缆 我就会松开 tcp ip
  • 关于ListView中ViewHolder模式实现优化

    因此 众所周知的 ViewHolder 模式通常看起来像 ListAdapter Override public View getView final int position View convertView final ViewGrou
  • Android 三星 S I9000 屏幕尺寸和密度问题

    我在 Samsung S I9000 上使用应用程序时遇到问题 我的应用程序上的按钮比应有的大得多 此外 系统选择 res values small 作为值的来源 总而言之 它的表现就好像该设备有一个非常小的屏幕 尽管它应该是 800x48
  • 如何检查设备是否可以通过有效的 WiFi 连接访问互联网?

    我指的是设备已连接到接入点但由于某种原因被阻止使用此 AP 访问互联网的情况 检查wifi是否启用 WifiManager wfManager WifiManager getSystemService Context WIFI SERVIC
  • 如何以编程方式显示/隐藏导航抽屉

    我如何使用按钮来显示 隐藏导航抽屉 我已经使用过this https stackoverflow com questions 20971245 navigation drawer without actionbar 20971952 209
  • 函数无法解析 Android NDK

    我正在尝试构建 NDK 项目 但遇到错误 这reverse在使用 JNI 和 NDK Android 的项目中无法解析该函数 您可以在附图中看到这一点 我已在路径和符号部分的项目属性中添加了路径 gt 也请参阅屏幕截图 None
  • INSTALL_FAILED_MISSING_SHARED_LIBRARY 没有 google api

    好吧 我一直在浏览 但我最终得到的只是谷歌的 api 我没有在我的应用程序中使用任何来自谷歌的API 我正在编写一个使用 sqlite 浏览器的应用程序 但尚未使用任何其他参考 任何想法 我之前没有开始过这个应用程序 所以现在这是一个非常大
  • UserRecoverableAuthException:NeedPermission

    我尝试按照教程进行操作 https developers google com android guides http auth https developers google com android guides http auth Co
  • android获取屏幕尺寸包括状态栏和软件导航栏的尺寸

    如何获取包含导航栏和状态栏的屏幕尺寸 以像素为单位 我已经尝试过使用获取尺寸DisplayMetrics但尺寸不包括软件导航栏 自 API 17 JELLY BEAN MR1 起添加了软件导航 因此我们只需要在 API 17 及更高版本中包
  • Android Studio:无法加载 dx.jar

    当我在 Android Studio 中运行我的模块时 出现以下错误 错误 Android Dex GradleDevBuild 无法加载 dx jar 我在网上无休无止地寻找解决方案 但一切都与 eclipse 有关 而与 Android
  • 保存新图像时,它会保留旧画布

    我有一个画布 允许用户绘制和保存 它还允许用户更改颜色并在同一画布上使用不同的颜色进行绘制 我的绘画课 package com test testing import android content Context import andro
  • Arcgis:如何获取设备位置

    我如何尝试在我的应用程序中实现这些代码 但它不起作用 我不知道哪里出了问题 基本上 当我启动设备位置的示例时 它没有显示我当前所在的位置 并且我没有看到任何与我当前所在位置类似的蓝点 我唯一看到的就是地图 只是一个简单的缩小地图 如果有人可
  • 渲染期间引发异常:无法找到操作栏的布局

    刚才使用 Android Studio 时 我在编辑器中编辑 XML 文件 在预览和设计窗口中收到此错误 Exception raised during rendering Unable to find the layout for Act

随机推荐

  • vasp-自旋轨道耦合(SOC)计算步骤

    在VASP中执行自旋轨道耦合 SOC 计算 具体的计算步骤如下 结构优化获取CONTCAR文件 自洽计算 collinear normal VASP calculations 获取CHGCAR文件 能带结构计算 在此步骤中 将KPOINTS
  • 第二十六节:class和焦点的操作管理

    1 关于class的操作 IE9以下的getElementsByClassName 方法兼容问题 p Hello World p p class a 增加样式 World p ul ul function getClass classA i
  • 想要成为网络hacker黑客?先来学习这十方面的知识

    黑客 一词来源于 hacker 在英语中它实际是个中性词 本身并没有褒贬之分 指的是精通编程 计算机 网络的人 另外专门有一个词 cracker 指那些利用计算机技术侵入他人系统从事非法活动的人 但在国内这两个词都被翻译为 黑客 导致在大部
  • Unity制作Live2D(一)模型导入

    目录 序言 前期准备 导入模型 序言 在许多游戏当中 Live2D展现出来了优秀的游戏体验 通过Live2D效果 让平面的游戏人物看起来更加生动 玩家也会感受到更多乐趣 前期准备 前往Live2DCubism官网下载Unity需要的SDKC
  • cenos6.4 mongodb shell模式 常用指令

    如果还没有安装mongodb DB服务端 用户可以参考该篇文章尝试安装mongodb http blog csdn net zhouzhiwengang article details 51441638 我们的实验环境为 操作系统 cent
  • Flutter中Provider的一般用法(一)

    在flutter中Provider是比较常用的Widget Provider通常用来管理value的生命周期 通过Create和Dispose 它们是成对出现的 可以在Create进行value的初始化操作 在dispose进行value的
  • Pytorch之经典神经网络Generative Model(二) —— VAE (MNIST)

    变分编码器 Variational AutoEncoder 是自动编码器的升级版本 其结构跟自动编码器是类似的 也由编码器和解码器构成 回忆一下 自动编码器有个问题 就是并不能任意生成图片 因为我们没有办法自己去构造隐藏向量 需要通过一张图
  • [Linux]模拟实现shell:命令行解释器

    分步思路解析 1 捕捉用户键盘输入 使用例如scanf gets等函数获取用户输入信息即可 2 解析输入的信息 得到命令名称和运行参数 解析获取到的上输入信息 将空格 回车 制表符等等全部忽略 只关心输入的字符串等 假如输入 ls a l
  • MATLAB对正弦信号进行FFT、加窗、调频、调幅。

    1 构造一个仿真信号x1 t 包含4个频率分量 分别为f1 50 f2 100 f3 150 f4 200 采样时间为10s 采样频率1000 绘制x t 的时域图和频谱图 2 针对题目1中的信号x1 t 改变采样时间为12s 采样频率为5
  • 处理cpu %wa过大,导致服务器不能访问的问题。

    今天发现自己的云服务器网站无法访问 查看之后发现 cpu 内存使用正常 监听端口也是正常的 用top命令发现 wa指CPU等待磁盘写入完成的时间 表示磁盘繁忙 这样一来web服务器自然就无法接收新的用户请求 因为linux处理每个进程都需要
  • 15.利用webpack搭建server本地服务

    1 每次修改了一点点的源代码 都会对原来的代码重新做一次打包 有了最新的一个内容 然后通过liveSever搭建一个本地服务 在我们浏览器里面打开把它运行起来 但是这整个过程经常操作会影响我们的开发效率 我们现在想一旦修改源代码以后 web
  • 谈谈数据仓库架构的发展和分类

    在此不做评述 仅供参考 以下内容均引自于ttnn网站 详细链接如下 http groups google com group ttnn lnk li 1发件人 Jerome 查看个人资料日期 2006年12月10日 星期日 下午4时36分电
  • Typora无法打开提示安装新版本解决办法

    最近使用Typora时 发现打开时提示如下错误 The beta version of typora is expired please download and install a newer version 并且会自动跳转到https
  • k8s-hostpath存储使用

    参考网址 https github com nailgun k8s hostpath provisioner 运行k8s hostpath provisioner 下载github项目 git clone https github com
  • AlexNet网络结构详解(含各层维度大小计算过程)与PyTorch实现

    AlexNet网络结构详解 含各层维度大小计算过程 与PyTorch实现 AlexNet网络架构 1 模型架构 2 AlexNet网络架构的贡献 3 Pytorch代码实现 AlexNet网络架构 1 模型架构 AlexNet网络结构相对简
  • 使用Go实现GoF的23种设计模式(一)

    前言 从1995年GoF提出23种设计模式到现在 25年过去了 设计模式依旧是软件领域的热门话题 在当下 如果你不会一点设计模式 都不好意思说自己是一个合格的程序员 设计模式通常被定义为 设计模式 Design Pattern 是一套被反复
  • python可以实现手机定位吗_用Python实现通讯定位功能——PYBOARD V702评测

    1 boot py 这个脚本文件执行时 开发板启动 它设置了开发板的多个选项参数 2 Main py 在boot py运行后被执行 包含python程序的主要脚本 3 Pybcdc inf Windows驱动文件 用来配置USB端口 4 R
  • Linux网络编程基础知识

    网络编程 本质 使用操作系统的接口函数 使得应用程序具备收发网络数据的能力 核心概念 协议 为进行数据通信而预定义的数据规则 地址 网络通信中的用于标识设备的整数值 端口号 设备为收发数据而指定的数值 用于标识具体链接 可理解为 设备中用于
  • 关于2020HUEL_ACM暑期集训八月集训计划变更

    时间飞逝若白驹过隙 转眼2020疫情期间这个特殊的暑假已经过去一半 因为一些原因我们第二个月不与hky一起训练了 正常周赛 咱们的集训计划也会发生相应的改变 具体如下 时间安排 八月共四个周 第一周 继续学习最小生成树 2天 和最短路 4天
  • 屏幕适配方案

    屏幕dp px换算公式 其中width height为我们的手机屏幕宽高 即1920 1080 inch为对角尺寸 常见5 5寸 5 0寸等 public void getAndroiodScreenProperty WindowManag