文档章节

获取Android控件尺寸

CrazyManDF
 CrazyManDF
发布于 2016/06/14 15:33
字数 224
阅读 19
收藏 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
博文 77
码字总数 30000
作品 0
程序员
Android高效显示图片详解(一)

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

openorz
2014/02/11
0
0
android屏幕自适应4方法案例整合

android:屏幕自适应 From:4种必须知道的Android屏幕自适应解决方案(求投票支持) demo下载:http://www.eoeandroid.com/forum.php?mod=attachment&aid=NjE0Njh8ZTIyZDA2M2N8MTMzODgyOTQx...

liuher
2014/07/22
0
0
Android屏幕自适应的四种方法

android:屏幕自适应 From:4种必须知道的Android屏幕自适应解决方案 demo下载:http://www.eoeandroid.com/forum.php?mod=attachment&aid=NjE0Njh8ZTIyZDA2M2N8MTMzODgyOTQxN3w1NzAwOTV8MT......

顶层设计
2012/11/15
0
0
Android中Fragment的使用

Fragment可能是我心中一直以来的执念,由于Android开发并没有像一般流程一样系统的学习,而是直接在公司项目中改bug开始的。当时正是Fragment被提出来的时候,那时把全部精力放到了梳理代码业...

votzone
07/11
0
0
Android技能树 — 屏幕适配总结

前言: 关于屏幕适配,几乎每隔一段时间就会看见有人发出来说XXX方案,实现超级简单的适配方式等等。所以我把我目前了解过的常用的适配方案做个总结,并简单说说原理,从而让大家也初步了解各...

青蛙要fly
07/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

驼峰变量名的转换

package com.mmall.test;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * 需求:1. 将字符串 user_name_abc 转换为 userNameAbc * 2. 将字符串 us......

蚂蚁-Declan
27分钟前
3
0
HTTP请求方法

根据HTTP标准,HTTP请求可以使用多种请求方法。 HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。 HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。 序号 方...

踏破铁鞋无觅处
30分钟前
1
0
知识点043-selenium自动化测试网页工具的使用

【摘要】 Selenium是一个主要用于Web应用自动化测试的工具集合。但其作用不仅仅局限于测试领域,还可以用于浏览器行为模拟以及屏幕抓取等,在行业内有着广泛的应用。Selenium支持主流的浏览器...

侠客行之石头
37分钟前
1
0
B250F I219V安装windows server 网卡驱动

https://blog.csdn.net/ryu2003/article/details/50855146

梦想游戏人
37分钟前
1
0
MacOS Install Docker

使用 Homebrew 安装 macOS 我们可以使用 Homebrew 来安装 Docker。 Homebrew 的 Cask 已经支持 Docker for Mac,因此可以很方便的使用 Homebrew Cask 来进行安装: $ brew cask install dock...

Linux就该这么学
38分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部