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

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

本篇文章借鉴于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 每英寸的点数,密度越大,每英寸容纳的点数就越多

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

}







你可能感兴趣的:(android基础)