获取屏幕高度

本文详细介绍了在Android应用中通过View和Display对象获取屏幕尺寸及状态栏高度的方法,包括直接从当前view获取宽高、通过Activity获取系统显示view根以及使用Display对象设置DisplayMetrics获取屏幕高宽。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、通过View提供的的方法获取高度的方式有两种:

1)当前显示的view直接获取当前view的宽高;

2)通过Activity的getWindow().findViewById(Window.ID_ANDROID_CONTENT)获取系统当前显示的view根(是一个framelayout对象),android绘制会将要绘制的view放置在framelayout中绘制。

 

二、通过Display对象获取屏幕高宽:

获取display对象Activity的中的getWindowManager().getDefaultDisplay()

getWidth();//返回显示界面宽度即屏幕宽度

getHeight();//返回显示界面高度即屏幕高度

 

 

由display对象设置DisplayMetrics宽高值,通过DisplayMetrics对象获取屏幕高宽,有点多此一举:

getWidth();//返回显示界面宽度即屏幕宽度

getHeight();//返回显示界面高度即屏幕高度

 

常用一些值计算:

屏幕宽高:Canvas对象,display对象和DisplayMetrics可获取屏幕的高宽

状态栏高度:view的getWindowVisibleDisplayFrame(Rect outRect)赋值outRect后,outRect.top()即是状态栏高度

标题高度:View的getWindowVisibleDisplayFrame(Rect outRect)赋值outRect后,outRect.height()--view.getHeight()即是标题高度。

<think>首先,用户的问题是:“我想获取屏幕高度 请问android displaymanager 获取屏幕高度”。所以,我需要基于Android平台,使用DisplayManager来获取屏幕高度。 在系统级指令中,我需要注意: - 所有行内数学表达式使用$...$格式。 - 独立公式使用$$...$$格式并单独成段。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾添加引用标识。 - 回答结构清晰,帮助用户逐步解决问题。 参考的引用内容: - 引用[1]:显示在Activity中获取屏幕高度:int height=display.getHeight(); - 引用[2]:提到通过WindowManager获取DisplayMetrics。 - 引用[3]:提供了通过WindowManager获取DisplayMetrics的代码示例。 - 引用[4]:提到heightPixels是屏幕高的像素值。 - 引用[5]:讨论了屏幕密度等。 用户指定了使用DisplayManager,所以我需要专注于DisplayManager的方法。 在Android中,获取屏幕高度通常使用Display或DisplayMetrics。DisplayManager是API级别17(Android 4.2)引入的,用于管理多个显示器。 步骤来获取屏幕高度: 1. 获取DisplayManager实例。 2. 获取默认显示或指定显示。 3. 获取显示信息,如高度。 使用DisplayManager的代码: - 首先,获取DisplayManager:Context.getSystemService(Context.DISPLAY_SERVICE)。 - 然后,使用getDisplay(Display.DEFAULT_DISPLAY)获取默认显示。 - 最后,获取显示的高度。可以使用Display.getSize(Point)或Display.getMetrics(DisplayMetrics)。 在API级别17+,推荐使用Display.getSize()或Display.getMetrics()。 代码示例: - 在Activity中: ```java DisplayManager displayManager = (DisplayManager) getSystemService(Context.DISPLAY_SERVICE); Display display = displayManager.getDisplay(Display.DEFAULT_DISPLAY); Point size = new Point(); display.getSize(size); int height = size.y; // 屏幕高度 ``` - 或者使用DisplayMetrics: ```java DisplayMetrics metrics = new DisplayMetrics(); display.getMetrics(metrics); int height = metrics.heightPixels; // 屏幕高度 ``` 用户问题中提到了“displaymanager”,所以我应该使用DisplayManager类。 确保回答真实可靠:基于Android官方文档,DisplayManager是推荐的现代方式,尤其对于多显示器支持。 结构回答: 1. 解释方法。 2. 提供代码示例。 3. 注意事项(如API级别)。 4. 添加引用标识(基于提供的引用)。 5. 生成相关问题。 引用标识: - 引用[1]提到在Activity中获取高度。 - 引用[3]提到使用WindowManager和DisplayMetrics。 - 引用[4]提到heightPixels。 所以,在回答中引用相关部分。 最后,生成相关问题。 完整回答结构: - 引言:解释如何获取屏幕高度。 - 步骤:详细说明使用DisplayManager。 - 代码:提供Java代码示例。 - 注意事项:如API兼容性。 - 引用:在相关部分添加引用。 - 相关问题:列出几个相关问题。</think>### 使用 DisplayManager 获取 Android 屏幕高度 在 Android 中,获取屏幕高度可以通过 `DisplayManager` 实现,尤其适用于 API 级别 17(Android 4.2)及更高版本。`DisplayManager` 提供了管理多个显示器的功能,包括获取默认屏幕的尺寸信息。以下是详细步骤和代码示例,确保您能在 Activity 或 View 中正确获取屏幕高度。 #### 步骤说明 1. **获取 DisplayManager 实例**:通过 `Context.getSystemService()` 获取 `DisplayManager` 对象。 2. **获取默认显示**:使用 `getDisplay(Display.DEFAULT_DISPLAY)` 获取屏幕的 `Display` 对象。 3. **提取屏幕高度**:推荐使用 `Display.getMetrics(DisplayMetrics)` 或 `Display.getSize(Point)` 方法获取高度值(单位为像素)。`heightPixels` 属性直接提供屏幕高度[^4]。 #### 代码示例(Java) 以下代码展示了在 Activity 中获取屏幕高度的完整方法。确保在 `onCreate()` 或类似生命周期方法中调用。 ```java import android.app.Activity; import android.hardware.display.DisplayManager; import android.os.Bundle; import android.util.DisplayMetrics; import android.view.Display; import android.view.Point; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 方法1:使用 DisplayMetrics(推荐,兼容性好) DisplayManager displayManager = (DisplayManager) getSystemService(Context.DISPLAY_SERVICE); Display display = displayManager.getDisplay(Display.DEFAULT_DISPLAY); DisplayMetrics metrics = new DisplayMetrics(); display.getMetrics(metrics); int screenHeight = metrics.heightPixels; // 屏幕高度(像素) // 示例输出:Log.d("ScreenInfo", "Height: " + screenHeight); // 方法2:使用 Point(API 13+) Point size = new Point(); display.getSize(size); int heightPoint = size.y; // 屏幕高度(像素) } } ``` #### 注意事项 1. **API 兼容性**: - `DisplayManager` 需要 Android 4.2(API 17)或更高版本。对于旧版本,可回退到 `WindowManager` 方法(如引用[3]所示)[^3]。 - 在 View 中获取高度时,需确保视图已完成布局(例如在 `onWindowFocusChanged()` 中调用),否则可能返回 0[^1]。 2. **单位转换**:高度单位为像素(px)。如需转换为 dp(密度无关像素),使用公式: $$ \text{dp} = \frac{\text{px}}{\text{density}} $$ 其中 `density` 可从 `DisplayMetrics.density` 获取[^4]。 3. **多显示器支持**:`DisplayManager` 支持多屏场景。使用 `getDisplays()` 获取所有显示器列表,再分别获取高度。 #### 引用说明 本方法基于 Android 官方文档,并结合引用中的实践优化。引用[3]和[4]确认了 `heightPixels` 是标准属性,提供屏幕高度的像素值[^3][^4]。引用[1]强调了在视图布局完成后获取尺寸的重要性[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值