Android屏幕尺寸、标题栏高度、状态栏高度、当前View尺寸
16lz
2021-01-23
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 blocke.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())); } }
更多相关文章
- Android多线程(一)
- Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面 .
- Android 面试必备 - 线程
- android 进程与线程 - 开发文档翻译 - 进程
- android 进程与线程 - 开发文档翻译 - 线程
- Android 中三种使用线程的方法