Android之dip与px互转

原创 2016年06月02日 10:37:54

直接上码,只为记录:

/**
 * 
 * @author Jenly
 *
 */
public class DisplayUtils {
	
	/**
	 * dip转px
	 * @param context
	 * @param dipValue
	 * @return
	 */
	public static int dip2px(Context context, float dipValue){            
		final float scale = getDisplayMetrics(context).density;                 
		return (int)(dipValue * scale + 0.5f);         
	}     
	
	/**
	 * px转dip
	 * @param context
	 * @param pxValue
	 * @return
	 */
	public static int px2dip(Context context, float pxValue){                
		final float scale = getDisplayMetrics(context).density;                 
		return (int)(pxValue / scale + 0.5f);         
	} 
	
	/**
	 * getDisplayMetrics
	 * @param context
	 * @return
	 */
	public static DisplayMetrics getDisplayMetrics(Context context){
		return context.getResources().getDisplayMetrics();
	}
	
	/**
	 * 获取屏幕宽度和高度,单位为px
	 * @param context
	 * @return
	 */
	public static Point getScreenMetrics(Context context){
		DisplayMetrics dm = getDisplayMetrics(context);
		int width = dm.widthPixels;
		int height = dm.heightPixels;
		return new Point(width, height);
		
	}
	
	/**
	 * 获取屏幕长宽比
	 * @param context
	 * @return
	 */
	public static float getScreenRate(Context context){
		Point p = getScreenMetrics(context);
		float h = p.y;
		float w = p.x;
		return (h/w);
	}
}


PS: 在dip与px互转时,因为最后转int会丢失精度,所以+0.5f用来减少误差。
版权声明:本文为博主柳絮丶原创文章,转载请注明出处:http://blog.csdn.net/jenly121

dip和px相互转换的工具类

package com.itheima.mobilesafe.utils; import android.content.Context; public class DensityUtil { ...
  • liuqiang211
  • liuqiang211
  • 2015年06月02日 20:34
  • 678

Android中 dip 和 px 的关系

我们先来看屏幕为480*800的机器, Button的宽度为160dip的很明显要比160px的要长,事实上,160dip的按钮占据了一半的宽度(240px),而160px的Button,就是160p...
  • foolsheep
  • foolsheep
  • 2014年01月14日 00:58
  • 2572

Android的px,dpi,dip三者的关系详解

px,dpi,dip 这三个东西大家都有了解,这3个都是单位,其中前2个单位在很多别的地方都有使用,但是dip这个单位是Android用来解决不同分辨率屏幕适配的一种方案,也就是大家熟知的dp。px全...
  • DanteStones
  • DanteStones
  • 2015年04月22日 11:34
  • 1162

Android中px、sp、dip的区别

从android源码分析dp、sp、px的区别
  • ericming200409
  • ericming200409
  • 2014年02月22日 16:01
  • 7597

Android中px、dp、dip、sp详解

众所周知,Android厂商非常多,各种尺寸的Android手机、平板层出不穷。导致了Android生态环境的碎片化现象越来越严重。Google公司为了解决分辨率过多的问题,在Android的开发文档...
  • sky1203850702
  • sky1203850702
  • 2014年09月24日 15:09
  • 12969

屏幕适配中的dip与px之间的转化

在项目中,为了适配所有的屏幕,有时候会使用到dip和px之间的转换 dip 称为设备独立像素,在不同的移动设备上,有着不同的显示效果,与设备的显示器的单位像素点有关。 px则是真是的物理像素,1p...
  • gongzhiyao3739124
  • gongzhiyao3739124
  • 2016年07月21日 16:14
  • 686

android 的布局单位 dip dp sp px总结

在android的xml布局当中,经常会看到dip、dp、px、sp等单位,知道它们的作用才可以更加精确的布局UI。 dip:英文device independent pixels(设备独立像素)。...
  • imyang2007
  • imyang2007
  • 2012年11月15日 10:52
  • 5808

android开发之dip、dp、sp、pt和px的区别以及屏幕密度略谈(外加屏幕适配)

懒惰,只是为了更好的懒惰!
  • zz1175854992
  • zz1175854992
  • 2015年02月27日 09:33
  • 2076

简述Android单位dp、sp、dip、px、等的区别和使用

废话就不多说了,直接说重点。首先解释下这几个单位的代表意思。 由于过去通常以像素为单位设计计算机用户界面。当一个像素在80x80的时候,在高分辨率显示器上运行该程序,则用户界面会显得很小。所以采用与...
  • Ae_fring
  • Ae_fring
  • 2016年08月05日 09:51
  • 1049

PX与DIP互转

//获得密度 float scale = context.getResources().getDisplayMetrics().density; //dp转px int px = (int) (dp ...
  • q445697127
  • q445697127
  • 2014年10月31日 16:18
  • 670
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android之dip与px互转
举报原因:
原因补充:

(最多只允许输入30个字)