Android中dp和px之间进行转换

Stella981
• 阅读 524

在xml布局文件中,我们既可以设置px,也可以设置dp(或者dip)。一般情况下,我们都会选择使用dp,这样可以保证不同屏幕分辨率的机器上布局一致。但是在代码中,如何处理呢?很多控件的方法中都只提供了设置px的方法,例如setPadding,并没有提供设置dp的方法。这个时候,如果需要设置dp的话,就要将dp转换成px了。

以下是一个应用类,方便进行px和dp之间的转换。

import android.content.Context;  
  
public class DensityUtil {  
  
    /** 
     * 根据手机的分辨率从 dp 的单位 转成为 px(像素) 
     */  
    public static int dip2px(Context context, float dpValue) {  
        final float scale = context.getResources().getDisplayMetrics().density;  
        return (int) (dpValue * scale + 0.5f);  
    }  
  
    /** 
     * 根据手机的分辨率从 px(像素) 的单位 转成为 dp 
     */  
    public static int px2dip(Context context, float pxValue) {  
        final float scale = context.getResources().getDisplayMetrics().density;  
        return (int) (pxValue / scale + 0.5f);  
    }  
}
点赞
收藏
评论区
推荐文章
晴空闲云 晴空闲云
1年前
css中box-sizing解放盒子实际宽高计算
我们知道传统的盒子模型,如果增加内边距padding和边框border,那么会撑大整个盒子,造成盒子的宽度不好计算,在实务中特别不方便。boxsizing可以设置盒模型的方式,可以很好的设置固定宽高的盒模型。盒子宽高计算假如我们设置如下盒子:宽度和高度均为200px,那么这会这个盒子实际的宽高就都是200px。但是当我们设置这个盒子的边框和内间距的时候,那
Wesley13 Wesley13
2年前
android dp和px之间转换
publicclassDensityUtil{/根据手机的分辨率从dip的单位转成为px(像素)/publicstaticintdip2px(Contextcontext,floatdpValue){
Stella981 Stella981
2年前
Less 嵌套
本节我们学习Less中的嵌套,嵌套应该很容易理解,HTML语言中就支持标签的嵌套。我们在使用CSS时,如果想要为多层嵌套的元素设置样式,要么给元素加上一个类选择器或ID选择器,要么使用后代选择器。例如:.xkd{fontsize:14px;}.xkdp{lineheight:25
Wesley13 Wesley13
2年前
Android计量单位px,in,mm,pt,dp,dip,sp和获取屏幕尺寸与密度
Android计量单位px  :是屏幕的像素点in  :英寸mm:毫米pt  :磅,1/72英寸dp :一个基于density的抽象单
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
2年前
IE7、IE8、IE9对min
问题:    IE7、IE8、IE9对minheight不识别,其他无问题解决:   box{width:100px;height:35px;}   htmlbodybox{width:auto;height:auto;width:100px;minheight:35px;} 实例:
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
2年前
A Mini Locomotive(动态规划 01)
 /\ 题意:选出3个连续的数的个数 为K的区间,使他们的和最大分析: dp\j\\i\max(dp\jk\\i1\value\j\,dp\j1\\i\);dp\j\\i\:从j个数种选出i个连续区间 数值的最大和value\j\:第j个区间内的数的和和背包有点像,但要活用\
京东云开发者 京东云开发者
10个月前
【差分隐私】基本原理与入门级应用 | 京东云技术团队
差分隐私(DifferentialPrivacy,DP)是密码学中的一种手段,可以提高从统计数据库进行数据查询的准确性,同时帮助最大限度减少识别其具体记录的机会。DP一般分为:CDP(CentralizedDifferentialPrivacy)、LDP(
燕青 燕青
5个月前
Macos屏幕分辨率修改工具:SwitchResX for Mac 破解版
是一款非常实用的显示分辨率切换工具,可以帮助用户在Mac上轻松地切换显示分辨率。它支持多种屏幕分辨率和DPI设置,允许用户根据需要自定义显示分辨率和缩放比例。SwitchResXMac支持所有MacBook和iMac系列,可以快速切换不同设备的分辨率和DP