Android学习笔记之屏幕宽高、状态栏宽高、标题宽高以及left()、top()、right()、bottom()

这篇博客介绍了Android中获取屏幕宽高、状态栏高度、标题栏高度以及控件的left()、top()、right()、bottom()等属性的方法。通过实例展示了如何在代码中获取这些值,并解释了为何有时会得到0的原因。此外,还讨论了单位转换、布局间距和子控件相对于父控件的位置计算。
摘要由CSDN通过智能技术生成

Android学习笔记之屏幕宽高、状态栏宽高、标题宽高以及left()、top()、right()、bottom()

前言:

  想学号安卓,这几个方法及属性你不得不学会怎么获取,当你学会了如何获取屏幕宽高、状态栏宽高、标题栏宽高以及子控件与父控件的left()、top()、right()、bottom()等,这会对你学习自定义控件会有很大的帮助,我之前做自定义的时候有时候也很难弄清他们之间的区别,今天有必要把这些知识点总结起来跟大家一起分享分享,让自己在今后的学习中不在为这些方法感到苦恼。

首先要了解的是安卓的屏幕分布区域(这里我采用的是1080 * 1920的屏幕),如下图所示:

这里写图片描述

通过上图我们就可以知道手机屏幕主要的三个区域了,下面我们开始使用代码来获取这三个区域的宽高度。

这里需要注意一下,这里我们所测的高度并不是1920,因为最底下有一个模拟的虚拟按钮占据了一定的空间高度,所以具体的高度,会根据手机的具体情况获取。

为什么我有时候在使用getLeft(), getRight(), getTop(), getBottom()它们得到的结果是0?
出现这种情况可能是在刚启动程序,程序刚开始绘制 view 的时候,你马上使用代码去捕获上面的值。这个时候,由于view 是刚开始绘制的,你得到的就会是 0,所以,这里我们所有的测试都放在点击事件里面来进行。

  1. 获取整个屏幕的宽度:

可以通过一下5中形式获取整个屏幕的宽高度

/**
     * 获取屏幕的总宽度
     * 采用5中方法
     */
    public void getTotalScreenWidthAndHeight() {
        //方法1
        WindowManager manager1 = getWindowManager();
        Display display = manager1.getDefaultDisplay();
        Point point = new Point();
        display.getSize(point);
        Log.d(TAG, "getTotalScreenWidth: width = " + point.x);
        Log.d(TAG, "getTotalScreenWidth: height = " + point.y);
        //方法2
        WindowManager manager2 = (WindowManager) getSystemService(WINDOW_SERVICE);
        int width = manager2.getDefaultDisplay().getWidth();
        int height = manager2.getDefaultDisplay().getHeight();
        Log.d(TAG, "getTotalScreenWidth: width = " + width);
        Log.d(TAG, "getTotalScreenWidth: height = " + height);
        //方法3
        WindowManager manager3 = getWindowManager();
        int width1 = manager3.getDefaultDisplay().getWidth();
        int height1 = manager3.getDefaultDisplay().getHeight();
        Log.d(TAG, "getTotalScreenWidth: width = " + width1);
        Log.d(TAG, "getTotalScreenWidth: height = " + height1);
        //方法4
        WindowManager manager4 = this.getWindowManager();
        DisplayMetrics outMetrics = new DisplayMetrics();
        manager4.getDefaultDisplay().getMetrics(outMetrics);
        int width2 = outMetrics.widthPixels;
        int height2 = outMetrics.heightPixels;
        Log.d(TAG, 
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值