Android中dp和px之间进行转换

来自:http://blog.csdn.net/arui319/article/details/6777133

在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);
    }
}
时间: 2024-10-01 22:46:06

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 DensityU

c++ 强制转换-64位linux中long和int之间的转换

问题描述 64位linux中long和int之间的转换 强制转换不是不可以,只是我在Makefile中加了编译选项,是不允许强制转换的 现在唯一想到的办法就是用位运算 我大概是这样写的 long s = 123; int i = 0xffffffff ; int j = i & s; //这里的s得看机器的大端法还是小端法,必要的时候需要移位 但这样写还是不行 int j = i & s; 还是有问题,因为不允许强制转换... - -! 请问有人能告诉我该怎么办么..(能否将long的前/

|||android中activity与fragment之间利用回调函数传递数据|||

问题描述 |||android中activity与fragment之间利用回调函数传递数据||| 最近开始学习android开发,碰上大问题,想实现这样一个效果,点击fragment中的一个button按钮,然后将这个按钮文本传递给activity,同时在activity剩余的布局中也创建一个相同的按钮,,不知道看懂我说的没? 在网上各种找资料说利用fragment向activity传递数据时需要在fragment创建一个回调接口,可是创建好了还是不知道怎么传递,主要问题在于activity中如

android开发-Android中关于全角和半角转换并且做输入限制的类

问题描述 Android中关于全角和半角转换并且做输入限制的类 在开发一个项目中,需要对昵称和签名做输入限制,而且是限制全角的方式,怎么实现 解决方案 全角字符占用2个字符位置,半角字符占用1个字符位置. 做长度测试 不知道行不 你试试

c语言-c中不同类型指针之间的转换

问题描述 c中不同类型指针之间的转换 不同类型的指针为什么可以装换,例如: void * a; char c=a; a=(void * ) &c; 指针不就是一个地址在里面么,有什么好转换的? 解决方案 指针的本质是都一样的,转换类型是让编译器知道怎么看所指向的内容. 解决方案二: 只有转换了才能通过编译 不同的指针 ++ --等结果也不同 sizeof也不同 解决方案三: 不同类型之间的转换C 不同类型指针的相互转化不同数字类型之间的转换---------------------- 解决方案四

Java 中基本类型和字符串之间的转换

Java 中基本类型和字符串之间的转换 在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换. 其中,基本类型转换为字符串有三种方法: 1. 使用包装类的 toString() 方法 2. 使用String类的 valueOf() 方法 3. 用一个空字符串加上基本类型,得到的就是基本类型数据对应的字符串 再来看,将字符串转换成基本类型有两种方法: 1. 调用包装类的 parseXxx 静态方法 2. 调用包装类的 valueOf() 方法转换为基本类型的包装类,会自动拆箱 PS:其他基

详解Android应用中屏幕尺寸的获取及dp和px值的转换_Android

获取屏幕尺寸 通过WindowManager获取 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); //其中display = getWindowManager().getDefaultDisplay() 获得了一个DefaultDisplay对象; 然后 display.getMetrics(dm) 把屏幕尺寸信息赋值给DisplayMetrics d

详解Android应用中屏幕尺寸的获取及dp和px值的转换

获取屏幕尺寸 通过WindowManager获取 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); //其中display = getWindowManager().getDefaultDisplay() 获得了一个DefaultDisplay对象; 然后 display.getMetrics(dm) 把屏幕尺寸信息赋值给DisplayMetrics d

JAVA中list,set,数组之间的转换详解_java

JAVA的list,set,数组之间的转换,主要是使用Apache Jakarta Commons Collections,具体的方法如下:import org.apache.commons.collections.CollectionUtils;    String[] strArray = {"aaa", "bbb", "ccc"};    List strList = new ArrayList();    Set strSet = new