`
苗振忠
  • 浏览: 59579 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

android 获取各种窗体高度

 
阅读更多
一. 获取屏幕的宽高
//取得窗口属性
getWindowManager().getDefaultDisplay().getMetrics(dm);
//窗口的宽度
int screenWidth = dm.widthPixels;
//窗口高度
int screenHeight = dm.heightPixels;
textView = (TextView)findViewById(R.id.textView01);
textView.setText("屏幕宽度: " + screenWidth + "\n屏幕高度: " + 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>
分享到:
评论

相关推荐

    android各种模块代码分类,多达20种以上

    4. **android 获取各种窗体高度**:获取不同窗口组件的高度,如活动(Activity)、视图(View)等,通常通过`View.getHeight()`或测量回调函数来实现。 5. **Bitmap、Drawable、inputStream及byte[] 互转**:在处理...

    android好用的utils集合

    4. **android 获取各种窗体高度**: 在Android开发中,有时需要获取屏幕或特定视图的高度。这个工具类可能包含方法,用于动态获取活动、窗口或任何视图的高度,这对于自适应布局或界面适配尤其有用。 5. **BitMap...

    Android获取窗体信息的Util方法

    在Android开发中,获取窗体信息是至关重要的,这包括屏幕尺寸、分辨率等,以便进行界面适配和优化。在给定的文件中,我们看到了一个名为`DisplayUtils`的工具类,它提供了获取Android设备屏幕尺寸的方法。下面将详细...

    Android一些模板代码

    android BitMap、Drawable、inputStream及byte[] 互转,dp和px之间转换,还原短信,横竖屏切换,获取各种窗体高度,禁用home键盘,开机启动,开机启动应用,挪动dialog的位置,判断网络状态,权限列表,设置apn,调节屏幕亮度,...

    解决Android中自定义DialogFragment解决宽度和高度问题

    `DeviceUtil.getDeviceWidth()`用于获取设备宽度,`ResUtils.dp2px(295)`将dp值转换为像素,以便设置高度。 通过以上内容,我们可以了解到如何使用DialogFragment以及如何自定义其尺寸和动画效果,从而在Android...

    Android实现悬浮窗体效果

    首先获取`WindowManager`服务,然后创建一个`WindowManager.LayoutParams`对象来设置窗体的属性,比如类型(`TYPE_SYSTEM_ALERT`)、焦点、触摸行为、显示模式、格式、重力以及宽度和高度。例如: ```java ...

    Android应用程序窗口(Activity)的窗口对象(Window)

    由此又可知,Activity只不过是一个高度抽象的UI组件,它的具体UI实现其实是由其它的一系列对象来实现的。在本文中,我们就将详细分析Android应用程序窗口对象的创建过程。为了方便接下来描述类型为PhoneWindow的应用...

    android编程实现悬浮窗体的方法

    在Android开发中,创建悬浮窗体(也称为悬浮小部件或浮动窗口)是一种常见的需求,例如,用于实现通知、快捷操作或辅助工具等。本文将详细介绍如何在Android中实现一个基本的悬浮窗体,包括权限控制、布局设计以及...

    Android弹窗列表demo

    - 初始化`PopupWindow`:创建一个`PopupWindow`实例,传入要显示的布局(包含列表)以及宽度和高度。 - 设置动画:可选择添加动画效果,如淡入淡出,增强用户体验。 - 设置监听器:为列表项设置点击监听器,处理...

    Android-ListView中嵌套(ListView)控件兼容问题

    在这段XML布局文件中,可以看到`LinearLayout`容器设置了`android:descendantFocusability="blocksDescendants"`属性,用于确保子视图不会获取焦点。 通过上述方法,可以有效地解决`ListView`嵌套时的兼容性问题,...

    FloatViewDemo

    在Android开发中,浮动窗体(通常称为悬浮窗或系统托盘)是一种常见的功能,它可以在用户界面上创建一个独立的、始终可见的小窗口,即使用户在其他应用程序中操作,这个小窗口也会保持显示。标题“FloatViewDemo”...

    Android程序技术:动画属性动画.pptx

    获取父窗体的宽度、高度 使用ofInt方法设置指定动画的数值区间。 设置动画持续时间 我们通过addUpdateListener添加了一个监听。 在监听事件中设置x轴、y轴的运动轨迹,调用moveView方法设置高度、宽度进行位置的方法...

    Android实现在列表List中显示半透明小窗体效果的控件用法详解

    在Android开发中,有时我们希望在用户滚动列表(ListView或者RecyclerView)时,显示一个半透明的小窗体,来提供一些提示或反馈。本实例详细介绍了如何实现这一效果,主要涉及以下知识点: 1. **WindowManager**: ...

    android仿360加速球实现内存释放

    综上所述,实现360加速球功能涉及到了Android的自定义View、内存信息获取、触摸事件处理、图形绘制等多个知识点。通过这个项目,开发者可以深入了解Android视图绘制、手势检测以及UI交互设计等核心技能。

    手机登陆界面设计

    每种布局元素都需要设置适当的属性,如`android:layout_width="fill_parent"`(使元素宽度填充父容器)、`android:layout_height="wrap_content"`(使元素高度适应内容大小)等。 ##### 3. 添加功能 仅仅有美观的...

    状态栏的使用状态栏的使用

    例如,在React Native中,可以使用`react-native-status-bar-height`库获取状态栏高度,或使用`StatusBar`组件来自定义状态栏的显示。 总的来说,理解并熟练运用状态栏的使用是提升移动应用质量的关键一环。通过...

    PopupWindow

    ### PopupWindow知识点详解 ...它不仅提供了灵活的显示方式,还能保持应用界面的互动性,非常适合用来实现各种临时性的UI需求。理解和掌握`PopupWindow`的使用方法,对于提高应用程序的用户体验具有重要意义。

    mui_app汇总整理.doc

    MUI框架是一款高度优化的前端框架,旨在提供接近原生APP体验的高性能开发环境。它封装了一系列APP开发中常见的组件,如导航栏、列表视图、滑动选项卡等,开发者可以通过这些组件的组合,结合AJAX请求后台接口,快速...

Global site tag (gtag.js) - Google Analytics