Android获取屏幕高度、状态栏高度、标题栏高度
来源:互联网 发布:易语言登录界面源码 编辑:程序博客网 时间:2024/05/06 18:26
在android应用中,有时需要计算个View的位置,导致需要计算状态栏高度,标题栏高度等信息。为以后方便,在此做个简单记录。
2、应用区域的获取其中,outRect.top 即是状态栏高度。用绘制区域的outRect.top - 应用区域的outRect.top 即是标题栏的高度。
注意: 如果刚启动Activity时就要计算这些数据,最好在 onWindowFocusChanged 函数中进行, 否则得到的某些数据可能是错误的,比如,应用区域高宽的获取。
晒代码前先了解一下android屏幕区域的划分,如下图(该图引用自此文http://www.iteye.com/topic/828830 )
1、 屏幕区域的获取
- activity.getWindowManager().getDefaultDisplay();
- Rect outRect = new Rect();
- activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(outRect);
3、view绘制区域获取
- Rect outRect = new Rect();
- activity.getWindow().findViewById(Window.ID_ANDROID_CONTENT).getDrawingRect(outRect);
注意: 如果刚启动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(){}
- }
0 0
- Android获取屏幕高度、状态栏高度、标题栏高度
- Android获取屏幕高度、状态栏高度、标题栏高度
- Android获取屏幕高度、状态栏高度、标题栏高度
- Android获取屏幕高度、状态栏高度、标题栏高度
- Android获取屏幕高度、状态栏高度、标题栏高度
- Android获取屏幕高度、状态栏高度、标题栏高度
- Android获取屏幕高度、状态栏高度、标题栏高度
- Android获取屏幕高度、状态栏高度、标题栏高度
- Android获取屏幕高度、状态栏高度、标题栏高度
- Android获取屏幕高度、状态栏高度、标题栏高度
- Android获取屏幕高度、状态栏高度、标题栏高度
- Android获取屏幕高度、状态栏高度、标题栏高度
- android 获取状态栏、标题栏、屏幕高度、宽度
- Android获取屏幕、标题栏、状态栏高度
- Android--获取标题栏,状态栏,屏幕高度
- Android 状态栏,标题栏,屏幕高度获取总结
- Android获取屏幕,状态栏,标题栏的高度
- android 状态栏、标题栏、屏幕高度
- TFS二次开发-基线文件管理器(1)-设计
- Linux Input子系统--概述
- U-boot 分析1
- Microsoft100——003.链表反转
- 运行Autoinvoice Master Program请求生成不了某张销售订单的发票
- Android获取屏幕高度、状态栏高度、标题栏高度
- Java 删除目录 指定文件
- iPhone6和iPhone6 Plus 尺寸
- 完整java开发中JDBC连接数据库代码和步骤
- Cassandra命令行操作概述
- node 学习
- 斯坦福大学机器学习——logistic回归
- android屏幕适配
- 避免物理内存碎片化