这是一个困扰我很就得问题。今天在我的反复摸索下,总结出了一些个规律。

以下测试以魅族mx5为例。

手机参数:5.5英寸;高:1920;宽1080.

/**
* 获得屏幕的宽度
*
* @param context
* @return
*/
public static int getScreenWidth(Context context) {
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
return (int)(displayMetrics.widthPixels/displayMetrics.density);
}
/**
* 获得屏幕的高度
* @param context
* @return
*/
public static int getScreenHeight(Context context) {
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
return (int)(displayMetrics.heightPixels/displayMetrics.density);
} /**
* 获得屏幕的像素宽度
* @param context
* @return
*/
public static int getScreenWidthPx(Context context) {
DisplayMetrics dm = new DisplayMetrics();
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
windowManager.getDefaultDisplay().getMetrics(dm);
return dm.widthPixels;
} /**
* 获得屏幕的像素高度
* @param context
* @return
*/
public static int getScreenHeightPx(Context context) {
DisplayMetrics dm = new DisplayMetrics();
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
windowManager.getDefaultDisplay().getMetrics(dm);
return dm.heightPixels;
}

执行各个方法,打印log,得到的数值:

02-29 19:59:09.411: E/InsertADActivity(23228): getScreenHeight:640 getScreenWidth:360

02-29 19:59:09.412: E/InsertADActivity(23228): getScreenHeightPx:1920 getScreenWidthPx:1080

    /**
* 获取屏幕的密度
*/
public static float getdensity(Context context) {
DisplayMetrics dm = new DisplayMetrics();
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
windowManager.getDefaultDisplay().getMetrics(dm);
LogUtil.e("getdensity", "dm.density:"+dm.density+" dm.densityDpi"+dm.densityDpi);
return dm.density;
}

02-29 20:01:56.685: E/getdensity(23228): dm.density:3.0 dm.densityDpi480

    if (relativeLayout.getParent()!=null) {
((ViewGroup) relativeLayout.getParent()).removeView(relativeLayout);
}
insertAdDialog = new AlertDialog.Builder(mActivity).setView(relativeLayout).create();
insertAdDialog.setCanceledOnTouchOutside(false);
insertAdDialog.show();
WindowManager.LayoutParams p = insertAdDialog.getWindow().getAttributes(); // 获取对话框当前的参数值
p.height = (int) (DeviceInfo.getScreenHeightPx(mActivity));
p.width = (int) (DeviceInfo.getScreenWidthPx(mActivity));
insertAdDialog.getWindow().setAttributes(p);

当这样设置时,dialog充满屏幕。

图片的像素和Android的dp值之间的关系。的更多相关文章

  1. 不同手机根据坐标计算控件、图片的像素,px 与 dp, sp换算公式?

    参考该帖子:http://www.cnblogs.com/bluestorm/p/3640786.html PPI = Pixels per inch,每英寸上的像素数,即 "像素密度&qu ...

  2. YUV与像素值之间的关系

    一幅彩色图像的基本要素是什么? 说白了,一幅图像包括的基本东西就是二进制数据,其容量大小实质即为二进制数据的多少.一幅1920x1080像素的YUV422的图像,大小是1920X1080X2=4147 ...

  3. 针对iPhone的pt、Android的dp、HTML的css像素与dpr、设计尺寸和物理像素的浅分析

    最近被一朋友问到:css中设置一DOM的height:65px,请问显示的高度是否和Android的65dp的元素等高?脑子里瞬间闪现了一堆的概念,如dpr,ppi,dp,pt等,然而想了一阵,浆糊了 ...

  4. iOS图片的伪裁剪(改变图片的像素值)

    0x00 原理 利用一张图片事先画好的图片(以下称为蒙板),盖在要被裁剪的的图片上,然后遍历蒙板上的像素点,修改被裁剪图片对应位置的像素的色值即可得到一些我们想要的不规则图片了(比如人脸) 0x01 ...

  5. win32加载图片获得像素值

    在写光栅渲染器时,需要加载图片获得像素以便进行纹理插值,试了几种方法发现下面这种比价简单,效率也可以接受 Texture2D是我自己定义的类,其中m_pixelBuffer是一个动态二维数组,每个元素 ...

  6. android - px(像素)、dpi(像素密度)、dip(密度无关像素)之间的关系

    使用ImageView会遇到的问题 在Android应用中,都少不了图片的显示,ImageView,轮播图,ViewPager等等,很多都是来显示图片的,很多时候,我们都希望图片能够在宽度上填充父窗体 ...

  7. px(像素)、pt(点)、ppi、dpi、dp、sp之间的关系

    px:pixel,像素,电子屏幕上组成一幅图画或照片的最基本单元 pt:point,点,印刷行业常用单位,等于1/72英寸 ppi:pixel per inch,每英寸像素数,该值越高,则屏幕越细腻 ...

  8. [转]Android中dp,px,sp概念梳理以及如何做到屏幕适配

    http://blog.csdn.net/jiangwei0910410003/article/details/40509571 今天又开始我的App开发,因为之前一直做的是SDK,所以涉及到界面UI ...

  9. 一直困扰设计师多年的Android 单位 dp

    轻松理解Android开发单位DP ,让设计与开发高度匹配,整合了网上各大资料汇总一个通俗易懂的. 一直困扰设计师多年的Android 单位 dp 设计这么多年了,相信很多设计师,一直被DP搞得晕头转 ...

随机推荐

  1. poj 1907 Work Reduction_贪心

    题意:公司要你要完成N份任务,但是你是不可能全部完成的,所以需要雇佣别人来做,做到剩下M份时,自己再亲自出马.现在有个机构,有两种付费方式,第一种是每付A元帮你完成1份,第二种是每付B元帮你完成剩下任 ...

  2. 命名空间“Aspose”中不存在类型或命名空间名称“Slides”。

    有可能引用的dll与项目的 .netFramework版本不同,需要确认两个版本是否相同.如果不同,项目右键->属性->应用程序.选择和引用的dll相同的版本.

  3. iOS 各种传值方式

    属性传值 将A页面所拥有的信息通过属性传递到B页面使用 B页面定义了一个naviTitle属性,在A页面中直接通过属性赋值将A页面中的值传到B页面. A页面DetailViewController.h ...

  4. java的静态代理

    解决这个问题:在多个模块要插入一段功能,比方,在不同业务处理模块中,都须要检查用户是否登录,假设不使用代理的话,每添加一个模块,就须要添加非常多代码. 比方,除了推断是否登录,假设还须要添加一个记录日 ...

  5. IDE idea 更换项目的JDK步骤

    1.如图:

  6. mysql 相同表求解统一字段不同内容的交集

    SELECT id, bid, name, title, publisher FROM A where publisher in (select publisher from B group by B ...

  7. js的事件属性方法一览表

    event对象常用属性和方法 event 对象用来表示当前事件,事件有很多状态,例如,鼠标单击时的位置,按下键盘时的按键,发生事件的HTML元素,是否执行默认动作,是否冒泡等,这些都是作为event对 ...

  8. Python面向对象关系

    首先了解一下Python面向对象中类型-实例和父类-子类的关系.下面的一些规则很有用. 当我们介绍许多不同的对象时,我们只用了两种关系(图4.1 关系): 是一类(is a kind of)(实线): ...

  9. php汉字转Unicode编码函数

    /** * $str 原始字符串 * $encoding 原始字符串的编码,默认GBK * $prefix 编码后的前缀,默认"&#" * $postfix 编码后的后缀, ...

  10. Activity 切换 动画

    overridePendingTransition的简介   1 Activity的切换动画指的是从一个activity跳转到另外一个activity时的动画. 它包括两个部分:一部分是第一个acti ...