获取屏幕的像素的和屏幕的密度

px (pixels)像素 – 是像素,就是屏幕上实际的像素点单位。
dip或dp (device independent pixels)设备独立像素, 与设备屏幕有关。

dpi(dot per inch):屏幕像素密度,每英寸多少像素


代码中 获取屏幕的宽高:代码如下所示:


DisplayMetrics mDisplayMetrics =  getResources().getDisplayMetrics();
//高的像素
int heigthPx = mDisplayMetrics.heightPixels;				
//宽的像素 
int widthPx = mDisplayMetrics.widthPixels;

总结:
densityDpi 每英寸多少个像素点,
density =  densityDpi /160
APP根据densityDpi的大小决定调用哪个文件夹下的图片,关系如下:
drawable-ldpi 底密度,通常是指120
drawable-mdpi 中等密度,通常是指160
drawable-xhdpi 超高密度,通常是指320
px = dip*density 
dip换算为PX的公式
/** 
     *  
     * Date:2014-7-22 </br> Desc:dip换算为px 
     * </br> 
     *  
     * @param ctx 
     * @param dpValue 
     * @return 
     */  
    private int dip2px(Context ctx, float dpValue) {  
  
    	final float scale = ctx.getResources().getDisplayMetrics().density;                   
        return (int)(dpValue * scale + 0.5f);
    } 
px换算为dip  的公式
/** 
     *  
     * Date:2014-7-22 </br> Desc:px换算为dip 
     * </br> 
     *  
     * @param ctx 
     * @param pxValue 
     * @return 
     */  
    private float px2dip(Context ctx, int pxValue) {  
    	  final float scale = ctx.getResources().getDisplayMetrics().density;                   
          return (int)(pxValue / scale + 0.5f);        
    }  
整个demo的代码如下所示
package com.test;


import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.widget.TextView;

public class MainActivity extends Activity {
	private TextView mPxWidth;
	private TextView mPxHeight;
	private TextView mDpi;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		mPxHeight = (TextView) findViewById(R.id.height_px);
		mPxWidth = (TextView) findViewById(R.id.width_px);
		mDpi = (TextView) findViewById(R.id.dpi);
		//获取DisplayMetrics 显示的通用信息
		DisplayMetrics mDisplayMetrics =  getResources().getDisplayMetrics();
		//高的像素
		int heigthPx = mDisplayMetrics.heightPixels;
		mPxHeight.setText("高的像素 "+ heigthPx);
		System.out.println("高的像素 "+ heigthPx);
		//宽的像素 
		int widthPx = mDisplayMetrics.widthPixels;
		mPxWidth.setText("宽的像素" + widthPx);
		System.out.println("宽的像素" + widthPx);
		//屏幕像素密度,每英寸多少像素
		int dpi  = mDisplayMetrics.densityDpi;
		mDpi.setText("每英寸多少像素"+dpi);
		System.out.println("每英寸多少像素" + dpi);
		//densityDpi 每英寸多少个像素点,
		//density =  densityDpi /160
		float density = mDisplayMetrics.density;
		System.out.println("density======"+density);
		System.out.println("dpi/160======"+Integer.toString((dpi/160)));
		
		
	}
	
	/** 
     *  
     * Date:2014-7-22 </br> Desc:dip换算为px 
     * </br> 
     *  
     * @param ctx 
     * @param dpValue 
     * @return 
     */  
    private int dip2px(Context ctx, float dpValue) {  
  
    	final float scale = ctx.getResources().getDisplayMetrics().density;                   
        return (int)(dpValue * scale + 0.5f);
    } 
    
    /** 
     *  
     * Date:2014-7-22 </br> Desc:px换算为dip 
     * </br> 
     *  
     * @param ctx 
     * @param pxValue 
     * @return 
     */  
    private float px2dip(Context ctx, int pxValue) {  
    	  final float scale = ctx.getResources().getDisplayMetrics().density;                   
          return (int)(pxValue / scale + 0.5f);        
    }  

}
参考:http://blog.csdn.net/wqunwang506/article/details/7925333
参考:http://blog.csdn.net/mr_icefox/article/details/38033843
参考:http://blog.csdn.net/yanzi1225627/article/details/17199323








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值