Android屏幕尺寸、标题栏高度、状态栏高度、当前View尺寸

class TestThread extends Thread{
    	Context con;
    	TestThread(Context co){
    		con=co;
    	}
    	public void run(){
    		try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			 //屏幕尺寸,全屏屏幕尺寸宽、高
	        DisplayMetrics dm = new DisplayMetrics();
	        ((Activity) con).getWindowManager().getDefaultDisplay().getMetrics(dm);
	        int dis_w = dm.widthPixels;
	        int dis_h = dm.heightPixels;
	        System.out.println("dis_w="+String.valueOf(dis_w));
	        System.out.println("dis_h="+String.valueOf(dis_h));
	        
	        //状态栏高度,注意,一下语句放在程序开始运行,得到结果为0
	        //可能原因是显示内容还没有达到稳定状态,所以这些值还没被确认
	        //个人解决方法是放入线程中,待第一个View显示后,调用线程,并延时1s再获取此尺寸
	        Rect frame = new Rect();  
	        getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);  
	        int statusBarHeight = frame.top;  
	        System.out.println("statusBarHeight="+String.valueOf(statusBarHeight));
	        
	        //标题栏+状态栏的值,同上需要延时
	        int contentTop = getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();  
	        System.out.println("contentTop="+String.valueOf(contentTop));
	        int titleBarHeight = contentTop - statusBarHeight ;
	        System.out.println("titleBarHeight="+String.valueOf(titleBarHeight));
	        //下面的ll是一个我定义过的LinearLayout,并在当前满屏显示(仅填充,非全屏)
	        //获取的尺寸为当前view显示的尺寸,同样需要延时获取
	        System.out.println("view_w"+String.valueOf(ll.getWidth()));
	        System.out.println("view_g"+String.valueOf(ll.getHeight()));
    	}
    	
    }

发布了99 篇原创文章 · 获赞 54 · 访问量 55万+

猜你喜欢

转载自blog.csdn.net/mrlixirong/article/details/8435368