您的位置:首页 > 移动开发 > Android开发

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

2012-12-25 22:03 447 查看
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()));
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: