博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
获取Android控件尺寸
阅读量:7072 次
发布时间:2019-06-28

本文共 1928 字,大约阅读时间需要 6 分钟。

hot3.png

获取系统的高度和宽度

/** * 获取显示屏幕的高度 * @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的方法

@Overridepublic 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()

转载于:https://my.oschina.net/u/2501904/blog/691251

你可能感兴趣的文章
单例模式详解
查看>>
matlab激光SLAM
查看>>
MVC2与MVC3之间的Ajax无刷新提交
查看>>
分布式版本控制系统Git的安装与使用
查看>>
Api接口加签验签
查看>>
hive 一次更新多个分区的数据
查看>>
陶哲轩实分析习题9.1.4
查看>>
团队项目—第二阶段冲刺第一天
查看>>
Windows API 第三篇
查看>>
小组绩效考核
查看>>
领域驱动设计(Domain Driven Design)架构详解
查看>>
es集群数据库~基本安装
查看>>
树链剖分+线段树 BZOJ 1036 [ZJOI2008]树的统计Count
查看>>
贪心 BestCoder Round #39 1001 Delete
查看>>
拓扑排序 POJ 1049 Sorting It All Out
查看>>
P1879 [USACO06NOV]玉米田Corn Fields
查看>>
Node知识总结
查看>>
MYSQL 基于GTID的复制
查看>>
英特尔携手中国游戏开发者登陆 Unite Shanghai 2019 推动游戏产业创新
查看>>
ASP.NET Core 找不到 npm指令异常
查看>>