Android获取屏幕高度、状态栏高度、标题栏高度
来源:互联网 发布:外国电视台直播软件 编辑:程序博客网 时间:2024/04/24 10:40
在android应用中,有时需要计算个View的位置,导致需要计算状态栏高度,标题栏高度等信息。为以后方便,在此做个简单记录。
晒代码前先了解一下android屏幕区域的划分,如下图(该图引用自此文http://www.iteye.com/topic/828830 )
1、 屏幕区域的获取
activity.getWindowManager().getDefaultDisplay();2、应用区域的获取
Rect outRect = new Rect(); activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(outRect);其中,outRect.top 即是状态栏高度。
3、view绘制区域获取
Rect outRect = new Rect();activity.getWindow().findViewById(Window.ID_ANDROID_CONTENT).getDrawingRect(outRect);用绘制区域的outRect.top - 应用区域的outRect.top 即是标题栏的高度。
注意: 如果刚启动Activity时就要计算这些数据,最好在 onWindowFocusChanged 函数中进行, 否则得到的某些数据可能是错误的,比如,应用区域高宽的获取。
详细代码如下:
public class ScreenSize extends Activity { private TextView mScreenSizeView ; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_screen_size); mScreenSizeView = (TextView) findViewById(R.id.screen_size); } @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if(hasFocus){ System.out.println("second"); StringBuilder sb = new StringBuilder(); Dimension dimen1 = getAreaOne(this); Dimension dimen2 = getAreaTwo(this); Dimension dimen3 = getAreaThree(this); sb.append("Area one : \n\tWidth: "+dimen1.mWidth + ";\tHeight: "+dimen1.mHeight); sb.append("\nArea two: \n\tWidth: "+dimen2.mWidth + ";\tHeight: "+dimen2.mHeight); sb.append("\nArea three: \n\tWidth: "+dimen3.mWidth + ";\tHeight: "+dimen3.mHeight); mScreenSizeView.setText(sb.toString()); } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_screen_size, menu); return true; } private Dimension getAreaOne(Activity activity){ Dimension dimen = new Dimension(); Display disp = activity.getWindowManager().getDefaultDisplay(); Point outP = new Point(); disp.getSize(outP); dimen.mWidth = outP.x ; dimen.mHeight = outP.y; return dimen; } private Dimension getAreaTwo(Activity activity){ Dimension dimen = new Dimension(); Rect outRect = new Rect(); activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(outRect); System.out.println("top:"+outRect.top +" ; left: "+outRect.left) ; dimen.mWidth = outRect.width() ; dimen.mHeight = outRect.height(); return dimen; } private Dimension getAreaThree(Activity activity){ Dimension dimen = new Dimension(); // 用户绘制区域 Rect outRect = new Rect(); activity.getWindow().findViewById(Window.ID_ANDROID_CONTENT).getDrawingRect(outRect); dimen.mWidth = outRect.width() ; dimen.mHeight = outRect.height(); // end return dimen; }
private class Dimension { public int mWidth ; public int mHeight ; public Dimension(){} }}
- Android获取屏幕高度、状态栏高度、标题栏高度
- Android获取屏幕高度、状态栏高度、标题栏高度
- Android获取屏幕高度、状态栏高度、标题栏高度
- Android获取屏幕高度、状态栏高度、标题栏高度
- Android获取屏幕高度、状态栏高度、标题栏高度
- Android获取屏幕高度、状态栏高度、标题栏高度
- Android获取屏幕高度、状态栏高度、标题栏高度
- Android获取屏幕高度、状态栏高度、标题栏高度
- Android获取屏幕高度、状态栏高度、标题栏高度
- Android获取屏幕高度、状态栏高度、标题栏高度
- Android获取屏幕高度、状态栏高度、标题栏高度
- Android获取屏幕高度、状态栏高度、标题栏高度
- android 获取状态栏、标题栏、屏幕高度、宽度
- Android获取屏幕、标题栏、状态栏高度
- Android--获取标题栏,状态栏,屏幕高度
- Android 状态栏,标题栏,屏幕高度获取总结
- Android获取屏幕,状态栏,标题栏的高度
- android 状态栏、标题栏、屏幕高度
- CKeditor
- 【产生冠军 2094】
- 2014年华为上机题一
- delphi BCC校验
- 阻抗匹配基础
- Android获取屏幕高度、状态栏高度、标题栏高度
- 金额小写转大写的函数(连续使用很久了)
- 游戏中%的应用
- 自定义SurfaceView Unable to start activity ComponentInfo
- 二分查找的递归与非递归实现
- 【转载】R6034错误,C Runtime Error
- java集合框架Set
- 横竖屏切换时候Activity的生命周期
- java之反射