获取Android控件尺寸

获取系统的高度和宽度

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值