• android 获取各种窗体高度


    一. 获取屏幕的宽高
        //取得窗口属性
            getWindowManager().getDefaultDisplay().getMetrics(dm);
            //窗口的宽度
            int screenWidth = dm.widthPixels;
            //窗口高度
            int screenHeight = dm.heightPixels;
            textView = (TextView)findViewById(R.id.textView01);
            textView.setText("屏幕宽度: " + screenWidth + " 屏幕高度: " + screenHeight);

    二、获取状态栏高度
        decorView是window中的最顶层view,可以从window中获取到decorView,然后decorView有个getWindowVisibleDisplayFrame方法
        可以获取到程序显示的区域,包括标题栏,但不包括状态栏。 于是,我们就可以算出状态栏的高度了。
        
        Rect frame = new Rect();
        getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
        int statusBarHeight = frame.top;


    三、获取标题栏高度
        getWindow().findViewById(Window.ID_ANDROID_CONTENT)这个方法获取到的view就是程序不包括标题栏的部分,
        然后就可以知道标题栏的高度了。

        int contentTop = getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();
        //statusBarHeight是上面所求的状态栏的高度
        int titleBarHeight = contentTop - statusBarHeight

    例子代码:

    package com.cn.lhq;
    import android.app.Activity;
    import android.graphics.Rect;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.Window;
    import android.widget.ImageView;
    public class Main extends Activity {
     ImageView iv;
     @Override
     public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
      iv = (ImageView) this.findViewById(R.id.ImageView01);
      iv.post(new Runnable() {
       public void run() {
        viewInited();
       }
      });
      Log.v("test", "== ok ==");
     }
     private void viewInited() {
      Rect rect = new Rect();
      Window window = getWindow();
      iv.getWindowVisibleDisplayFrame(rect);
      int statusBarHeight = rect.top;
      int contentViewTop = window.findViewById(Window.ID_ANDROID_CONTENT)
        .getTop();
      int titleBarHeight = contentViewTop - statusBarHeight;
      // 测试结果:ok之后 100多 ms 才运行了
      Log.v("test", "=-init-= statusBarHeight=" + statusBarHeight
        + " contentViewTop=" + contentViewTop + " titleBarHeight="
        + titleBarHeight);
     }
    }

     

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
     <ImageView
      android:id="@+id/ImageView01"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"/>
    </LinearLayout>
  • 相关阅读:
    【转】 Shiro 核心功能案例讲解 基于SpringBoot 有源码
    【转】 SpringData 基于SpringBoot快速入门
    【转】 Dubbo整合SpringBoot
    【转】 SpringBoot war包部署到Tomcat服务器
    【转】 SpringBoot使用Redis缓存
    【转】 SpringBoot统一异常处理
    【转】 SpringBoot创建定时任务
    【转】 SpringBoot 多环境配置
    js小数运算出现误差
    vue中组件的data为什么是一个函数
  • 原文地址:https://www.cnblogs.com/miaozhenzhong/p/5931049.html
Copyright © 2020-2023  润新知