android dp 和 px 的相互转换

在开发中,可能需要动态设置控件的大小

例如为一个gridview设置宽度:

LinearLayout.LayoutParams linearParams2 = (LinearLayout.LayoutParams)head_gridView.getLayoutParams();
		        int realwidth = Utils.Dp2Px(context, 32);
				linearParams2.width=(headAdapter.getCount())*(realwidth);
		        linearParams2.height=30;
		        head_gridView.setLayoutParams(linearParams2);

这个时候我们直接给宽度设置一个固定的数字,他是被当作像素处理的,产生的效果就有可能和我们想要的效果不一样

这个时候我们只要进行dp px的相关转换就行了,代码如下:

/**
	 * dp转成px
	 * @param context 上下文对象
	 * @param dp dp数值
	 * @return px数值
	 *
	 */
	public static int Dp2Px(Context context, float dp) {
	    final float scale = context.getResources().getDisplayMetrics().density;
	    return (int) (dp * scale + 0.5f);
	}  

	/**px转成dp
	 * @param context 上下文对象
	 * @param px 像素数值
	 * @return dp数值
	 *
	 */
	public static int Px2Dp(Context context, float px) {
	    final float scale = context.getResources().getDisplayMetrics().density;
	    return (int) (px / scale + 0.5f);
	}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-14 11:27:02

android dp 和 px 的相互转换的相关文章

【转】 Android dp和px之间进行转换

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

android dp 与 px 换算表

密度类型 代表的分辨率(px) 屏幕密度(dpi) 换算(px/dp) 比例 低密度(ldpi) 240x320 120 1dp=0.75px 3 中密度(mdpi) 320x480 160 1dp=1px 4 高密度(hdpi) 480x800 240 1dp=1.5px 6 超高密度(xhdpi) 720x1280 320 1dp=2px 8 超超高密度(xxhdpi) 1080x1920 480 1dp=3px 12 2k屏(xxxhdpi) 1440×2560 640 1dp=4px 1

Android dp和px之间转换 及 获取坐标

dp.px.sp转换 1 public class DensityUtil { 2 /** 3 * 将px值转换为dip或dp值,保证尺寸大小不变 4 * 5 * @param pxValue 6 * @param scale 7 * (DisplayMetrics类中属性density) 8 */ 9 public static int px2dip(float pxValue, float scale) { 10 return (int) (pxValue / scale + 0.5f);

android dp和px之间转换

dp.sp 和 px 的区别: dp 也就是 dip.一种基于屏幕密度的抽象单位,在每英寸160点的显示器上,1dp=1px.这个和 sp 基本类似.如果设置表示长度.高度等属 性时可以使用 dp 或 sp.但如果设置字体,需要使用 sp.dp 是与密度无 关,sp 除了与密度无关外,还与 scale 无关. sp: scaled pixels(放大像素). 主要用于字体显示(best for textsize). px:表示屏幕实际的象素.例如,320*480 的屏幕在横向有 320 个象素,

android DP和PX之间的转换

public class DensityUtils { /** * 根据手机的分辨率从 dp 的单位 转成为 px(像素) */ public static int dip2px(Context context, float dpValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f); } /** * 根据手机的分辨

关于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系统中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) {