Android之获取屏幕分辨率、密度、尺寸

    xiaoxiao2021-03-25  13

    在实际应用中,为了适配屏幕,要知道所用的手机的分辨率。

    本篇文章借鉴于http://blog.csdn.net/lincyang/article/details/42679589

    并应用于实际项目中,得到了很大的帮助,感谢该博主的分享

    1.获取分辨率

    Android 早期的版本可以通过getHeight(),getWidth()获取屏幕宽高,现在已经不推荐使用了

    现在获取分辨率的可使用getSize();//方法的原型可参考API

    public void getDisplayInfo(){

    Point point = new Point();

    getWindowManager().getDefaultDisplay().getSize(point);

    Log.e("TAG","==屏幕分辨率=="+point.toString());

    //getWindowManager().getDefaultDisplay().getRealSize(point);

    //Log.e("TAG","==屏幕分辨率=="+point.toString());

    }

    另外,Android还提供了一种方法getRealSize();

    这两种方法有一定的区别:通常情况下两者的返回值并无差别

    但是,在Androidmanifest.xml设置不同的主题后,两者会有差别

    android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"

    android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

    Activity继承ActionBarActivity

    >注:这种方式也有可能不会有差别,读者可参考以上分享博文

    2、屏幕密度

    屏幕密度:DPI <dots-per-inch> 每英寸的点数,密度越大,每英寸容纳的点数就越多

    public void getDensity(){

    DisplayMetrics displayMetrics = getResources().getDisplayMetrics();

    Log.e("TAG",Density is  "+displayMetrics.density+

    "densityDpi is  "+displayMetrics.densityDpi +"height:"+displayMetrics.heightPixels

    +"width:  "+displayMetrics.widthPixels );

    }

    3、屏幕尺寸

    屏幕尺寸:对角线长度,单位:英寸,1英寸=2.54厘米

    public void getScreenSizeOfDevice(){

    Point point = new Point();

    getWindowManager().getDefaultDisplay().getRealSize(point);

    DisplayMetrics dm = getResources().getDisplayMerics();

    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);

    }

    4、DIP即dp,与密度无关的像素,现在常在布局文件中使用

    官方推荐使用dp是因为它会根据你设备的密度算出相应的像素值,px = dp*density;

    >注意:在Java代码中对控件设置宽高是不可以设置单位的,其自带的单位是像素,如果需要动态修改控件大小时,就要实现px 与dp之间的转换

    代码:

    //px = dp*density

    public int dpTopx(int dp){

    DisplayMetrics displayMetrics = mContext.getResources().getDisplayMetrics();

    return (int)(dp*displayMetrics.density);

    }

    public int pxTodp(int px){

    DisplayMetrics displayMetrics = mContext.getResources().getDisplayMetrics();

    return (int)(px/displayMetrics.density);

    }

    转载请注明原文地址: https://ju.6miu.com/read-300208.html

    最新回复(0)