dp和px的转化

一、首先要认识下:屏幕密度ppi
ppi  pixles percent inch  每英寸的像素数
ppi = 水平方向的像素数 / 屏幕宽度

例如:3.7in   480 x 800
         3.7 * 3.7 = 3x*3x + 5x * 5x 
宽度: 3 * 0.63 = 1.89   
PPI ?  480 / 1.89 = 254

规定:ppi是160,标准屏幕密度   mdpi
          240    hdpi
         
二、dp和px的转化
dp和px换算公式:   1dp = 当前屏幕密度 / 160 * 1px
3.7in   480 x 800    1dp = 1.5px

三、代码实现
package com.nooice.library.utils;

import android.content.Context;

/**
 * @describe <dp和px的转化>
 */
public class RKDensityUtil {
 
 public static int dpToPx(Context context,float dpValue) {//dp转换为px
  float scale=context.getResources().getDisplayMetrics().density;//获得当前屏幕密度
  return (int)(dpValue*scale+0.5f);  
 }
 
 public static int pxToDp(Context context,float pxValue) {//px转换为dp
  float scale=context.getResources().getDisplayMetrics().density;//获得当前屏幕密度
  return (int)(pxValue/scale+0.5f);  
 }
}

时间: 2024-11-12 03:08:57

dp和px的转化的相关文章

Android系统中的dp和px的转换

android系统中DP和SP的转化:1.首先分析TypedValue.java 可以调用以下代码获得dp的值 TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20,getResources().getDisplayMetrics()); public static float applyDimension(int unit, float value,DisplayMetrics metrics) { switch (unit) {

android中的长度单位,dip、dp、px、sp及获取屏幕分辨率和密度

本文主要讲的是android中长度单位(dp.px.sp)的用法. 1.px:pixels(像素) (1).不同的设备不同的显示屏显示效果是相同的 (2).这是绝对像素,是多少就永远是多少不会改变. 一般我们形容屏幕的分辨率,例如分辨率800*480,实际表示改手机屏幕在高度上有800个像素,宽度上有400个像素,整个屏幕就是由800*480个像素点组成.但是由于我们的屏幕大小是不一样的,就会导致同样分辨率在不同尺寸的屏幕上表现不同,同分辨率下,尺寸越小的屏幕上每英寸上分布的像素点就越多,即分辨

关于android的单位dp与px

原文:Android中dp和px之间进行转换 官方文档:http://developer.android.com/guide/practices/screens_support.html The density-independent pixel is equivalent to one physical pixel on a 160 dpi screen, which is the baseline density assumed by the system for a "medium&quo

Android程序猿如何泡设计妹之快速掌握dp和px才可以

相信很多Android程序猿已经对身边的设计妹垂涎三尺了,那么如何博得设计妹的好感呢,学好这篇文章就可以了. 程序猿与UI设计妹讨论设计稿和切图的时候,经常会因为dp和px的问题搞的不愉快,这里可以分析出两个原因: 1,程序猿原因,不懂dp和px的换算关系.包括我,以及我见到的大多数开发,更多的时候其实不是很关心dp和px是如何来的,以及如何转换的,只知道掌握一般情况用dp,字体大小用sp,画线用px. 2,设计妹原因,设计不出dp标注,或者甚至就不懂dp是什么东东.大多数公司并不会为Andro

android: android中dip、dp、px、sp和屏幕密度

android中dip.dp.px.sp和屏幕密度 转自:http://www.cnblogs.com/fbsk/archive/2011/10/17/2215539.html 1. dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA.HVGA和QVGA 推荐使用这    这个,不依赖像素. 这里要特别注意dip与屏幕密度有关,而屏幕密度又与具体的硬件有关,硬件设置不正确,有可能导致dip不能正常

Android 多屏幕适配 dp和px的关系

一直以来别人经常问我,android的多屏幕适配到底是怎么弄,我也不知道如何讲解清楚,或许自己也是挺迷糊. 以下得出的结论主要是结合官方文档进行分析的https://developer.android.com/guide/practices/screens_support.html android由于碎片化太严重,而导致市面上出现非常多的种类尺寸手机设备,当然也包括非常奇葩的分辨率手机.所以我们在布局的时候使用px作为单位显然不能很好的做到多屏幕的适配.其实在官方文档中有介绍一种解决多屏幕适配的

Android中dip(dp)与px之间单位转换 dip2px dp转px 无context算法(以及获取获取屏幕宽度和高度)

废话不多说直接上代码: 1.dip2px  dp转px  无context算法 public static int px2dip(int pxValue) { final float scale = Resources.getSystem().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); } public static float dip2px(float dipValue) { final float s

Android 中dp和px

dp是虚拟像素,在不同的像素密度的设备上会自动适配,比如: 在320x480分辨率,像素密度为160,1dp=1px 在480x800分辨率,像素密度为240,1dp=1.5px 计算公式: 1dp*像素密度/160 = 实际像素数 float density = context.getResources().getDisplayMetrics().density; px = (int)(dp * scale + 0.5f); dp = (int)(px / scale + 0.5f);

Android上dip、dp、px、sp等单位说明(转)

dip  device independent pixels(设备独立像素). 不同设备不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA.HVGA和QVGA 推荐使用这个,不依赖像素. 在android上开发的程序将会在不同分辨率的手机上运行.为了让程序外观不至于相差太大,所以引入了dip的概念.比如定义一个矩形10 x 10dip.在分辨率为160dpi的屏上,比如G1,正好是10 x 10像素.而在240 dpi的屏,则是15 x 15像素.换算公式为pixs = dips *