文档章节

获取Android控件尺寸

CrazyManDF
 CrazyManDF
发布于 2016/06/14 15:33
字数 224
阅读 21
收藏 0

获取系统的高度和宽度

    /**
 * 获取显示屏幕的高度
 * @return
 */
private int getScreenHeight() {
	WindowManager windowManager = mainActivity.getWindowManager();
	Display display = windowManager.getDefaultDisplay();

	Point point = new Point();
	display.getSize(point);
	int SCREEN_WIDTH = point.x;
	int SCREEN_HEIGHT = point.y;

	// 或者
	DisplayMetrics dm = new DisplayMetrics();
	display.getMetrics(dm);
	int SCREEN_WIDTH = dm.widthPixels;
	int SCREEN_HEIGHT = dm.heightPixels;

	return SCREEN_HEIGHT;
}

/**
 * 获取顶部status bar高度
 * @return
 */
private int getStatusBarHeight() {
	Resources resources = mContext.getResources();
	int resourceId = resources.getIdentifier("status_bar_height", "dimen","android");
	int height = resources.getDimensionPixelSize(resourceId);
	return height;
}

/**
 * 获取底部 navigation bar 高度
 * @return
 */
private int getNavigationBarHeight() {
	Resources resources = mActivity.getResources();
	int resourceId = resources.getIdentifier("navigation_bar_height","dimen", "android");
	int height = resources.getDimensionPixelSize(resourceId);
	return height;
}

获取控件的高度和宽度

1)安装布局监听器

mView.getViewTreeObserver().addOnGlobalLayoutListener(
	new OnGlobalLayoutListener() {
		@Override
		public void onGlobalLayout(){                                             
			mViewHeight = mView.getHeight();
			//OnGlobalLayoutListener可能会被多次触发,所以注销掉
			mView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
		}
});

2)view的UI线程

mView.post(new Runnable() {
	@Override
	public void run() {
		mViewHeight = mView.getMeasuredWidth());
		}
	}
);

3)重写Activity的方法

@Override
public void onWindowFocusChanged(boolean hasFocus) {
	super.onWindowFocusChanged(hasFocus);
	int[] location = new int[2];
	mView.getLocationOnScreen(location);
	mViewHeight = location[1];
}

系统调用顺序为

Activity.oncreate()→Activity.onResume()→
→TestImageView.onMeasure()→TestImageView.onLayout()→onGlobalLayoutListener()→
→Activity.onWidnowFocusChanged()→.....→
→TextImageView.onDraw()

© 著作权归作者所有

共有 人打赏支持
CrazyManDF
粉丝 3
博文 78
码字总数 30986
作品 0
程序员
私信 提问
android有效的获取图像和视频

比较不错的帖子哦 ! 移动资讯—— 《我是开发者》个人专访 http://www.eoeandroid.com/thread-185404-1-1.html 用activity实现半透明的、淡入的menu【原创】 http://www.eoeandroid.com/th...

长平狐
2012/08/21
232
0
Android高效显示图片详解(一)

前提与解释: 安卓平台作为一款移动端的应用操作平台,其内存容量是十分有限的,内存资源是十分珍贵的,是无法与传统的桌面平台相比的,因此,在安卓平台下同样的图片操作与处理都要十分谨慎...

openorz
2014/02/11
0
0
android有效的获取图像和视频

创建一个预览类 为了让用户有效的获取图像和视频,必须能让他们看到相机中的影像。一个相机预览类是一个SurfaceView类,它可以显示相机中的实时影像,于是用户就可以框住并捕获图像或视频。 ...

长平狐
2012/08/14
199
0
Android自定义View属性,使用或获取自定义View属性,获取View默认属性

> 获取自定义View属性 Android 自定义属性时TypedArray的使用- https://blog.csdn.net/cswhale/article/details/53100792 TypedArray typedArray = context.getTheme().obtainStyledAttribu......

desaco
01/05
0
0
棒棒糖之——Android中视图的绘制流程

我的稀土掘金博客同步发布更新: 棒棒糖之——Android中视图的绘制流程 一、前言 Android中Activity是作为应用程序的载体存在的,它代表着一个完整的用户界面,提供了一个窗口来绘制各种视图...

落地吃鸡
2017/04/29
0
1

没有更多内容

加载失败,请刷新页面

加载更多

Flink 幕后之内存管理

Flink 幕后之内存管理 引言 目前很多大数据处理框架,例如Hadoop、Spark、Storm、Flink等。它们都基于JVM语言开发(java or scala),运行在JVM上。为了加速合并或者排序(基于磁盘的方式通常...

moyiguke
15分钟前
1
0
风起云涌,看云计算如何赋能媒体行业?

在媒体行业的转型升级中,云计算的出现多维度促进了媒体融合,打破传统媒体行业与新媒体的界限和竞争格局,在媒体素材管理、移动端功能演进的过程中扮演着重要角色,颠覆了传统媒体新闻采编、...

七牛云
18分钟前
0
0
Mybatis开发遇到问题汇总

mybatis 中![CDATA[...]] 在今天使用Mybatis的xml文件中写sql语句时写入了一些特殊字符 如 < > & 等,但解析xml文件的时候会被转义,事实上并不希望它被转义,可以使用<![CDATA[ ]]>. 这是XML...

wangwei2134
26分钟前
0
0
参数验证 @Validated 和 @Valid 的区别

来源:blog.csdn.net/qq_27680317/article/details/79970590 整编:Java技术栈(公众号ID:javastack) Spring Validation验证框架对参数的验证机制提供了@Validated(Spring's JSR-303 规范......

Java技术栈
28分钟前
0
0
JS实现继承的几种方式

前言 JS作为面向对象的弱类型语言,继承也是其非常强大的特性之一。那么如何在JS中实现继承呢?让我们拭目以待。 JS继承的实现方式 既然要实现继承,那么首先我们得有一个父类,代码如下: ...

不负好时光
32分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部