android-Bitmap,屏幕知识

屏幕密度

屏幕密度与DPI这个概念紧密相连,DPI全拼是dots-per-inch,即每英寸的点数。也就是说,密度越大,每英寸内容纳的点数就越多。

android.util包下有个DisplayMetrics类可以获得密度相关的信息。getResources().getDisplayMetrics().densityDpi

最重要的是densityDpi这个成员,它有如下几个常用值:

DENSITY_LOW = 120  
DENSITY_MEDIUM = 160  //默认值  
DENSITY_TV = 213      //TV专用  
DENSITY_HIGH = 240  
DENSITY_XHIGH = 320  
DENSITY_400 = 400  
DENSITY_XXHIGH = 480  
DENSITY_XXXHIGH = 640 
public static void getDensity(Context context) {
        DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();

        Log.d("screen ", "Density is " + displayMetrics.density +
                " densityDpi is " + displayMetrics.densityDpi +
                " height: " + displayMetrics.heightPixels +
                " width: " + displayMetrics.widthPixels);
    }

densityDpi 密度(160/480等),densityDpi是每英寸的点数(dots-per-inch)是打印机常用单位(因而也被称为打印分辨率),而不是每英寸的像素数。下面引出PPI这个概念。

density ,密度(1.0/3.0等)

heightPixels ,屏幕高度的像素。这个又与实际屏幕的宽度像素不一样。

PPI。

private void getScreenSizeOfDevice2() {  
    Point point = new Point();  
    getWindowManager().getDefaultDisplay().getRealSize(point);  
    DisplayMetrics dm = getResources().getDisplayMetrics();  
    double x = Math.pow(point.x/ dm.xdpi, 2);  
    double y = Math.pow(point.y / dm.ydpi, 2);  
    double screenInches = Math.sqrt(x + y);  
    Log.d(TAG, "Screen inches : " + screenInches);  
}  

获得屏幕的尺寸,inch单位。

问题:

获得屏幕的宽高分辨率:

/**
     * 获得屏幕宽度
     *
     * @param context
     * @return
     */
    public static int getScreenWidth(Context context) {
        WindowManager wm = (WindowManager) context
                .getSystemService(Context.WINDOW_SERVICE);
        DisplayMetrics outMetrics = new DisplayMetrics();
        wm.getDefaultDisplay().getMetrics(outMetrics);
        return outMetrics.widthPixels;
    }
    /**
     * 获得屏幕宽度
     *
     * @param context
     * @return
     */
    public static int getScreenHeight(Context context) {
        WindowManager wm = (WindowManager) context
                .getSystemService(Context.WINDOW_SERVICE);
        DisplayMetrics outMetrics = new DisplayMetrics();
        wm.getDefaultDisplay().getMetrics(outMetrics);
        return outMetrics.heightPixels;
    }
    public static int getScreenWidth(Activity activity) {
        return activity.getWindowManager().getDefaultDisplay().getWidth();
    }

    public static int getScreenHeight(Activity activity) {
        return activity.getWindowManager().getDefaultDisplay().getHeight();
    }
手机分辨率是1920*1080,可是以上两种方式获得的都是1800*1080 .待研究。。。?

猜你喜欢

转载自blog.csdn.net/t_yoo_csdn/article/details/80166014