在Android的实际开发中,会经常用到获取屏幕的尺寸的问题,以便设置一些布局在屏幕上的固定位置,从而适配各个屏幕的设备。
今天我就来讲一下怎么得到当前设备的屏幕像素吧:
一、在Activity中:
Display display = getWindowManager().getDefaultDisplay();//得到当前屏幕的显示器对象 Point size = new Point();//创建一个Point点对象用来接收屏幕尺寸信息 display.getSize(size);//Point点对象接收当前设备屏幕尺寸信息 int width = size.x;//从Point点对象中获取屏幕的宽度(单位像素) int height = size.y;//从Point点对象中获取屏幕的高度(单位像素) Log.v("zxy", "width="+width+",height="+height);//width=480,height=854可知手机的像素是480x854的
二、不在Activity中:
通过WINDOW_SERVICE对象获得默认的Display对象
WindowManager wm = (WindowManager) Context.getSystemService(Context.WINDOW_SERVICE); Display display = wm.getDefaultDisplay();//然后获得屏幕像素就和第一个方法的一样了
Display display = getWindowManager().getDefaultDisplay(); int width = display.getWidth(); // 获得宽度像素 int height = display.getHeight(); // 获得屏幕高度像素
上面这些代码,就是获得屏幕的尺寸信息的,然后可以通过所获取的宽度或高度去乘以一个百分比来设置一个控件的宽高,从而达到适配的作用。
当然还有一种方式获得屏幕的像素的,就是通过DisplayMetrics对象来获得,这个的意思就是获得一个界面度量对象,用来获得当前屏幕的高和宽,实现方式如下:
DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); int height = metrics.heightPixels;//获得屏幕高度 int width = metrics.widthPixels;//获得屏幕宽度
获取状态栏和标题栏的高度
废话不多说,直接贴代码吧:
Rect frame = new Rect();//创建一个空的矩形对象 getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);//获得顶层窗口的装饰视图,即状态栏,然后把状态栏显示的框架填充给刚刚我们创建的矩形对象,再通过矩形对象来获取状态栏高度 int statusBarHeight = frame.top;// 获取状态栏高度:frame.top Log.v("zxy1", statusBarHeight+"");//打印出来的值为:38,即状态栏高度为38px View v = getWindow().findViewById(Window.ID_ANDROID_CONTENT);// /获得根视图, int allHeight = v.getTop();// 状态栏和标题栏的总高度
public int Dp2Px(Context context, float dp) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dp * scale + 0.5f); }
转载请注明出处---------