Android dp转px不要再用这么low的方式写了!

Android中常见的单位ppi,dp,dpi,sp,px 在android 开发过程中,我们使用的单位比较少,一般情况下在描述字体大小的时候我们通常用sp,而在设置间距的时候我们用dp,除此之外很少再用到其他单位,而且很多时候我们用着用着就习惯了,也不去探究为什么这么写,可不可以用其他单位,每个单位到底代表着什么意思,所以说,习惯真的很可怕呀。今天,我们就来一探究竟,看看这些单位背后的含义。 PX(像素) 像素即是屏幕上显示数据的最基本的点,在PS里面也是其最根本的单位,所有的图形都是在此基础上生成的,平时我们经常讲的手机屏幕分辨率就是以像素作为单位的,比如在an 阅读详情
AI摘要

本文主张去除Context参数,提供更简洁的dp2px方法,通过Resources.getSystem().getDisplayMetrics()实现,提升代码效率并降低复杂度。

网上一般的答案是这么写的:

public static int dip2px(Context context, float dpValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f);
}

其实我们仔细想想,我们实际指向对DP的数据做个转换而已,为啥一定要传Context对象,所以其实我们完全没有必要这样,从现在起将你项目中的这个工具方法换成下面这种方式吧:

public static float dp2px(float dp) {
        return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, Resources.getSystem().getDisplayMetrics());
}

通过Resources.getSystem().getDisplayMetrics(),比你以前的看起来简洁多了吧。

Gromacs基础教程一:入门建议 本系列教程针对的群体:非计算化学专业,而是偏生物方向的、有少量分子动力学模拟需求的人群。 阅读详情

相关推荐

我的老款Intel MacBook Pro,如何用OpenVINO把本地大模型推理速度提升10倍?

本文详细介绍了如何在老款Intel MacBook Pro上使用OpenVINO工具包将本地大模型推理速度提升10倍。通过对比Ollama CPU原生、Transformers原生和OpenVINO优化三种方案,展示了OpenVINO在性能优化上的显著优势,并提供了从环境配置到模型转换、性能调优的完整实战指南。

weixin_28694295的博客 299

Android 为什么 dp2px 或 px2dp 公式需要加 0.5f

网上 dp2px 和 px2dp 公式: public static int px2dip(Context context, float pxValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (pxValue / s

changcsw的专栏 1万+

Android Studio打包全攻略---从入门到精通

初出茅庐 手动打包怎么手动打包项目写完了,现在需要把应用上传到市场,问题出现—怎么把代码变成.apk(Android的可安装文件)。 1. 创建签名文件 2. 填写好签名参数 3. 生成APK 注意:签名的密码和密匙的密码注意保管,不要忘了,签名文件别泄漏了,也别搞丢了为什么要打包我最开始就有这个疑问,我们的代码不是点了下运行按钮就直接安装到手机上了吗,我们在在项目Project

我早就想,要这样载着你,翻山越岭 2万+

dp与px之间的相互转换

dp与px之间的相互转换

qq_43516208的博客 592

零基础实战:YOLO检测头自定义替换全攻略

本文为零基础用户提供了YOLO检测头自定义替换的完整实战指南。通过将检测头比作汽车的“方向盘”,文章详细阐述了为何需要替换、如何寻找和集成新检测头模块、修改配置文件以及最终训练验证的全过程,旨在帮助用户针对特定任务(如小目标检测)提升模型性能。

perl8的博客 253

基于Arduino的智能垃圾桶

通过本次简单的Arduino智能垃圾桶小实验可以快速了解Arduino的基本用法 1、材料准备 Arduino UNO HC-SR04超声波模块 SG90舵机 杜邦线 电源 电脑 2、代码分析 电机的控制 #include<Servo.h> #define duoji D5 Servo myduoji; void setup() { myduoji.attach(duoji); //舵机连接 Serial.begin(115200); } void loop() { myduoji.w

weixin_41679960的博客 1万+

Android屏幕适配全攻略

目前主流屏幕是1280*720,开发后期会在不同分辨率的机型上测试,如480*800的和1920*1080的。如果没出现太大的问题,在不影响使用的情况下,就可以上线了。但或多或少都会出现点小bug,这时候我们开发人员都会在心里默唱草泥马之歌...但是工作还是要做的,所以: 适配原则: 不用绝对布局, 多用相对布局和线性布局。 距离使用dp,而不用px,字体大小用sp。图片多使用.9的

yechaoa 1651

Simulink中Simscape—Fluids模块(原Simhydraulics)学习记录

学习来源:http://cn.mathworks.com/help/physmod/hydro/getting-started-with-simhydraulics.html 主要学习内容如下图: 详细内容: 1、组件来源 SIMULINK浏览器中的模块:Simscape_Foundation 和 Simscape_Fluids。 2、Simscape下包括多个子

1万+

Android之屏幕适配

        网上屏幕适配的方式有很多,比如按百分比的、按分辨率的,这里我是按最小宽度去适配,也是Google建议的方式。         1.首先下载屏幕适配插件ScreenMatch。         AS→File→Settings→plugins→SreenMatch下载即可。         2.在项目的任意目录或文件右键选择ScreenMatch,选module,生成一堆dim...

u014611408的博客 364

GIS常用符号化色带(超级色带)根据python制作

GIS自带的色带比较单一,今天分享一款色带,应用之后大家出图的时候可以选择更多的配色,符号化/点击色块/样式引用/将样式添加至列表即可。色带类型比较多,大家可以自己尝试下不同的风格。简单符号化一下,看看效果。以中国县级行政区划为例,

J_Giser的博客 2637

14、5G物理层的灵活解决方案:广义频分复用(GFDM)

广义频分复用(GFDM)作为一种高度灵活的5G物理层多载波调制方案,能够满足多样化应用场景的需求,包括高吞吐量的比特管道通信、低功耗高连接数的物联网、超低延迟的触觉互联网以及广覆盖的无线区域网。通过参数化配置,GFDM可适配LTE资源网格,实现与现有系统的兼容与共存。其支持多种解调方式、干扰消除技术、OQAM映射及预编码机制,兼具低带外发射、高频谱效率和强鲁棒性。GFDM还能统一描述OFDM、FBMC、FTN等多种经典与先进波形,成为5G及未来通信系统中极具潜力的通用波形框架。

gold8的专栏 108

android 扩展函数,Kotlin 扩展函数和扩展属性的使用方法

kotlin 能够扩展一个类的新功能而无需继承该类或者使用像装饰者这样的设计模式。 这通过叫做 扩展 的特殊声明完成。 例如,你可以为一个你不能修改的、来自第三方库中的类编写一个新的函数。 这个新增的函数就像那个原始类本来就有的函数一样,可以用普通的方法调用。 这种机制称为 扩展函数 。此外,也有 扩展属性 , 允许你为一个已经存在的类添加新的属性。前言作为安卓开发,我们常常碰到这样的场景,需要把...

weixin_34098209的博客 658

人员行为规范检测:YOLOv8+C#实现工厂车间安全监控,违规即报警零延迟

该方案通过YOLOv8的装备检测与姿态估计的动作识别,结合C#的实时管控能力,实现了从“被动巡检”到“主动预警”的转变。相比传统人工,违规响应速度提升10倍,全年可减少90%以上的安全隐患。方案已在3家制造企业落地,支持自定义违规规则(如新增“吸烟”“未系安全带”),可根据车间场景灵活扩展。需要完整的模型训练配置文件(含数据集增强脚本)或C#系统源码(视频处理+报警模块)的,评论区扣“SafetyDetect”,可直接获取部署版本~

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1174

Android dip/dp、px等的关系

dip,dp, px, sp, dpi, width, height的解释及用法 width   屏幕水平方向能摆放的像素点数,称为分辨率(width*height) height 屏幕垂直方向能摆放的像素点数,称为分辨率(width*height) dip/dp (device independent pixels)  设备独立像素,与屏幕设备无关; 谷歌引用的一个单位,用于适应不同分辨率

痱子源的专栏 2120

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

【Android】 dp与sp,加冕为王

DPI 是一个物理度量,表示每英寸长度内可以显示的像素点数。一个较高的 DPI 值意味着屏幕每英寸可以显示更多的像素,从而提供更清晰、更细腻的显示效果。DPI 的单位通常是像素/英寸(PPI,即 Pixels Per Inch)。在Android中,DPI 用于区分不同屏幕密度的设备。Android系统根据设备的DPI值将屏幕分为几个不同的类别,以便为不同的屏幕提供适当的资源和布局。

2303_79296612的博客 3035

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Android中px, ppi, dpi, dp, dip, sp概念解析

Android的碎片化已经被喷了好多年,随着国内手机厂商的崛起,碎片化也越来越严重,根据OpenSignal的最新调查,2014年市面上有18796种不同的Android设备,作为开发者,一个无法回避的难题就是需要适配各种各样奇奇怪怪的机型。

天道酬勤,坚信不疑 2594

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

android 屏幕dp值计算

从源码角度分析屏幕dp值计算

雨石轩的专栏 6633

Android手机适配,手机尺寸、px、dpi、dp、sp详解

转载请注明出处:http://blog.youkuaiyun.com/z191726501/article/details/50411483 最近一直在学习Android的适配问题,在学习的过程中发现很多博客抄来抄去,并没有什么实质的东西,因此决定将自己关于Android手机适配问题的学习笔记整理出来,希望都够帮助到大家。 要学习Android的适配问题,以下几个概念是必须要理解的。 px:像素,pix...

曾博文的博客 1万+

摩客怎么设置安卓的dp_Android屏幕适配——使用 dp 实现完美适配

我们一直知道 Android 可以使用 dp、sp 完成简单的适配,那你真的理解了么?先来看几个问题:dp 是如何进行适配的?dp 和 px 是如何换算的?sp 和 dp 的区别?dp 适配为什么会有偏差?如何解决 dp 适配的偏差,达到完美适配?下面我们就来看下源码,解决这些问题。概述在 android.util 包下,有个重要的类就是 DisplayMetrics,它主要是记录显示县官的一些信...

weixin_34891592的博客 765

android关于屏幕画图的一些度量单位及概念(sp,dp,px,dpi,density)

对android的布局文件中常常用到的度量单位比较困惑,因此网上了解了一下,根据自己的了解,作如下整理和解释,有一些概念可能解释有误,留作日后改进。 1. 概念解释 (1)px--pixel, 像素,是一个数量单位,屏幕上实际的像素点单位,比如设定一个按钮的长度是100px,屏幕分辨率HVGA代表320×480 pixel。 (2)dpi--dot per inch,(dot是否可以理解为p

Lynn1050的专栏 1552

Android 手机屏幕适配方式和原理

就是我们平常讲的手机屏幕大小,是屏幕的对角线长度,一般讲的大小单位都是英寸。其适配原理主要是根据dp/sp与px的转换,而dp/sp与px的转换又与DisplayMetrics的density相关,所以可以通过改变DisplayMetrics的density,scaledDensity和densityDpi的值来适配不同分辨率机型。是dot per inch的缩写,就是每英寸的像素数,也叫做屏幕密度。是Density independent pixel的缩写,指的是抽象意义上的像素。

2301_76766616的博客 1431

Android应用图标的尺寸大小

1. 程序启动图标(icon launcher)放在mipmap-*dpi下,文件名为ic_launcher.pngL DPI ( Low Density Screen,120 DPI ),其图标大小为 36 x 36 pxM DPI ( Medium Density Screen, 160 DPI ),其图标大小为 48 x 48 pxH DPI ( High Density Screen, 2...

weixin_42336002的博客 1万+

android ui布局教程视频,Android UI教程 - Android布局

Android UI教程 - Android布局测量单位当在Android UI上指定元素的大小时,您应该知道以下测量单位:dp是密度独立的像素。 1 dp等于160dpi上的一个像素 屏幕。 这是指定时的推荐测量单位 视图的维度。 160dpi屏幕是基线密度 假设由Android。 在引用a时,可以指定“dp"或“dip"...

weixin_29698063的博客 172

Android-App 常用图标尺寸规范汇总

1. 程序启动图标(icon launcher) 放在mipmap-*dpi下,文件名为ic_launcher.png LDPI (Low Density Screen,120 DPI),其图标大小为 36 x 36 px。MDPI (Medium Density Screen, 160 DPI),其图标大小为 48 x 48 px。HDPI (High Density Screen,

u012295927的专栏 4293

android 平面图app_Android必知必会-App 常用图标尺寸规范汇总

1. 程序启动图标(icon launcher)放在mipmap-*dpi下,文件名为ic_launcher.pngLDPI ( Low Density Screen,120 DPI ),其图标大小为 36 x 36 pxMDPI ( Medium Density Screen, 160 DPI ),其图标大小为 48 x 48 pxHDPI ( High Density Screen, 2...

weixin_39850365的博客 284

安卓DisplayMetrics获取屏幕分辨率

安卓DisplayMetrics获取屏幕分辨率         Android 可设置为随着窗口大小调整缩放比例,但即便如此,手机程序设计人员还是必须知道手机屏幕的边界,以避免缩放造成的布局变形问题。        手机的分辨率信息是手机的一项重要信息,很好的是,Android 已经提供DisplayMetircs 类可以很方便的获取分辨率。下面简要介绍 DisplayMetics 类:  

月女冬舞的博客 745
上一篇: Java多线程编程(2)之线程同步
下一篇: 通俗易懂的HashMap源码分析
IT烂笔头
博客等级 码龄15年 621粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值