`
yuyanshan
  • 浏览: 49109 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

android中获得屏幕、视图、任务栏、状态栏的高宽以及屏幕的设置

阅读更多
首先,有一点需要声明,其实在android中,画布Canvas的高宽其实是屏幕的高宽。

如此一来,获得屏幕高宽的方法就很多了:

1.

WindowManager windowManager = getWindowManager();

Display display = windowManager.getDefaultDisplay();

screenWidth = display.getWidth();

screenHeight = display.getHeight();


2.

DisplayMetrics dm = new DisplayMetrics();

this.getWindowManager().getDefaultDisplay().getMetrics(dm);//this指当前activity

screenWidth =dm.widthPixels;

screenHeight =dm.heightPixels;
以上两种方法在屏幕未显示的时候,还是处于0的状态,即要在setContentView调用之后才有效。

3.

还可以在onDraw中由canvas来获得
screenWidth =canvas.getWidth();

screenHeight =canvas.getHeight();


而视图的高宽则是大多数人所认为的canvas的高宽,其实他所指的是除了任务栏和状态栏的高宽,主要有如下方法:

1.

viewWidth=this.getWidth();

viewHeight=this.getHeight();


2.重写view的onSizeChanged,该方法会在onCreate之后,onDraw之前调用

protected void onSizeChanged(int w, int h, int oldw, int oldh) {
viewHeight=h;
viewWidth=w;
super.onSizeChanged(w, h, oldw, oldh);
}
任务栏、状态栏的高宽的高宽我目前还不清楚,不过从网上查找可知:

引用
frameworks\core\res\values\themes.xml
<item name="windowTitleSize">25dip</item>
frameworks\core\res\values\dimens.xml
<dimen name="status_bar_height">25dip</dimen>
在一个activity中如果要获取高宽,最好是放在onSizeChanged中比较保险。

以上是我对android获得高宽的一点总结,如果有错误的地方,欢迎留言探讨。

另外,还有对屏幕显示的一些设置:

//设置为无标题

requestWindowFeature(Window.FEATURE_NO_TITLE);


//设置为全屏模式getWindow().setFlags
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);


//设置为横屏

setRequesteOrientation(ActivityInfo.SCREEN_ORIENTATION_LADSCAPE);
分享到:
评论
1 楼 黑人也疯狂 2011-03-28  
请教下,onSizeChanged函数里面的w, h, oldw, oldh四个参数的值是怎么得到的?我查看view的源码,里面只是一个protected方法...当一个自定义MyView继承View,但是并没有传递参数给onSizeChanged啊,所以这里我很困惑...谢谢! 

相关推荐

    C#获取屏幕和桌面大小(宽、高)

    在C#编程中,获取屏幕和桌面的大小(即宽度和高度)是常见的需求,这在开发图形用户界面或者处理窗口布局时尤为重要。本篇将详细介绍如何利用C#的System.Windows.Forms和System.Drawing命名空间中的类来实现这一功能...

    popupmenu的详细使用demo

    在这个“popupmenu的详细使用demo”中,我们将探讨如何设置`PopupMenu`的背景颜色、字体大小以及处理单行点击事件。 1. 创建`PopupMenu` 首先,我们需要在Java代码中创建`PopupMenu`实例。通常在响应某个视图的点击...

    windows字体详解 获得文字每一部分的高宽值,屏幕分辨率,屏幕物理尺寸毫米数,文字所占像素数TEXTMETRIC.zip

    深入理解Windows字体的工作原理以及如何获取文字的各个部分的高宽值、屏幕分辨率、屏幕物理尺寸和文字所占像素数,对于进行高级图形编程和界面设计至关重要。在这个话题中,我们将探讨`TEXTMETRIC`结构,它是Windows...

    关于自适应屏幕方向和大小的一些经验.doc.zip

    在现代的移动设备和网页设计中,自适应屏幕方向和大小已经成为必不可少的考虑因素。随着智能手机和平板电脑的广泛使用,用户可能在不同尺寸和方向的屏幕上浏览内容,因此开发者必须确保他们的应用或网站能够在各种...

    什么是高宽课程.doc

    这种课程模式围绕着五个主要内容领域,即“学习方式”、“语言、读写能力和交流”、“社会性和情感发展”、“身体发展和身心健康”以及“艺术与科学”,并设置了58条关键性发展指标,适用于不同年龄段的儿童。...

    nc-screen:Nodejs C ++插件获取设备屏幕尺寸

    数控屏Nodejs C ++插件获取设备屏幕尺寸编译sudo yarn test 或者sudo npm run test待办事项清单打字稿npm脚本: node-gyp build和node-gyp rebuild之间有什么区别捕获错误边界参考

    可变高宽的圆角框————html+css

    在提供的代码片段中,可以看到一个名为`#m_category`的`div`元素,它包含了一个`h3`标题和一个类为`con`的`div`容器,以及一个类为`footer`的`div`。这些元素通过CSS样式实现了可变高宽的圆角框效果。 ##### 2.1 ...

    屏幕尺寸换算单(全)

    屏幕尺寸换算,将英寸的屏幕尺寸换算成长高宽尺寸

    Java爬虫+URL获取Img高宽.zip

    本项目“Java爬虫+URL获取Img高宽”专注于一个特定的应用场景,即通过Java爬虫从网页中提取图片(Img)的URL,并进一步获取这些图片的宽度和高度。这个功能在网站数据分析、图像处理或自动化测试等场景中具有重要...

    限定高宽压缩图片工具

    限定高宽压缩图片工具 1、在下工具的下面 点击“开始压缩”按钮 开始压缩。 2、添加文件夹时会子文件夹下的图片添加到列表里。 但是输出 直到一个你指定的文件夹下。 不会建立子文件夹。因此 主要子文件夹。 3、若...

    2020高中数学 1.2.2空间几何体三视图反馈练习(无答案) 新人教A版必修2.doc

    在高中数学的学习中,空间几何体的三视图是一个至关重要的概念,它是理解和描绘三维几何形状在二维平面上投影的基础。三视图包括了主视图、俯视图和侧视图,它们分别展示了物体从前、上、侧面看时的形状,帮助我们...

    关于rem的一切,这里全都有_能“等比例”适配所有屏幕尺寸教程.zip屏幕自适应

    在网页设计领域,屏幕自适应是一项至关重要的技术,它使得网站能够优雅地适应不同设备的屏幕尺寸,提供良好的用户体验。"rem"(Root Em)单位是实现这种自适应布局的关键工具之一。本教程将深入探讨rem单位,以及...

    javascript获取网页各种高宽及位置的方法总结.docx

    ### JavaScript 获取网页各种高宽及位置的方法总结 #### 屏幕尺寸相关属性 - **`screen.width`**:表示屏幕的宽度(以像素为单位)。 - **`screen.height`**:表示屏幕的高度(以像素为单位)。 - **`screen....

    Android 刘海屏适配总结(推荐)

    Android 刘海屏适配总结 ...刘海屏适配是 Android 应用程序的必要一步,通过设置屏幕高宽比例和应用支持 resizeable,可以告诉系统,我们应用已经适配了刘海屏,并且可以避免刘海屏手机上的 UI 显示问题。

    ios-自定义标签集合视图.zip

    JHTagView是由开发者JonHory创建的一个开源项目,它提供了一个自动计算标签高宽并支持多种自定义属性的标签视图集合。通过集成此库,开发者可以轻松地在应用中实现功能丰富的标签展示功能,而无需从头编写复杂的布局...

    详解Android PopupWindow怎么合理控制弹出位置(showAtLocation)

    AndroidPopupWindow是Android系统中常用的UI组件之一,它可以在屏幕上弹出一个浮动窗口,展示一些信息或提供一些交互功能。但是,PopupWindow的弹出位置经常会被开发者所忽视,导致用户体验不良。今天,我们将详细...

    Egret全屏处理

    Egret全屏处理在游戏开发或交互式应用中是一个常见的需求,特别是在移动设备上,全屏模式可以提供更好的沉浸式体验。Egret引擎是一个基于TypeScript的2D游戏开发框架,它提供了丰富的功能来支持游戏开发,包括全屏...

    vb属性窗口属性设置大全.doc

    ### VB属性窗口属性设置大全——PictureClip控件与ProgressBar控件详解 #### PictureClip 控件的常用属性 **PictureClip** 控件主要用于处理图形的裁剪功能,它提供了丰富的属性来帮助开发者根据需要裁剪图形并...

    Android代码-CircleProgressBar

    设置排版方式,当高宽超过绘制所需尺寸时,此属性定义其绘制位置 cpbRadius dimension setRadius(float radius) 设置环形半径,其包括了绘制的进度的尺寸 cpbStartAngle integer setStartAngle(int angle) 设置...

    C# 根据坐标点开始取设置大小的截图

    在IT行业中,屏幕截图是一种常见的任务,特别是在软件开发、测试和文档编写中。"C# 根据坐标点开始取设置大小的截图"这个主题涉及的是利用C#编程语言实现自定义区域截图的功能。C#提供了丰富的图形处理API,允许...

Global site tag (gtag.js) - Google Analytics