首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android取得长宽的问题

Android取得长宽的问题

作者头像
提莫队长
发布2019-03-01 09:56:48
6750
发布2019-03-01 09:56:48
举报
文章被收录于专栏:刘晓杰刘晓杰

今天在重写View时遇到一个问题,在构造函数中使用getWidth()时为0,而在onDraw函数中却可以取到值。一番搜索后终于知道了原因:

当一个view对象创建时,android并不知道其大小,所以getWidth()和getHeight()返回的结果是0,真正大小是在计算布局时才会计算

所以,要想在构造函数中取得长宽,需要如下代码:

		DisplayMetrics dm = new DisplayMetrics();
		WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
		wm.getDefaultDisplay().getMetrics(dm);
		width = dm.widthPixels/9f;// 获取屏幕分辨率宽度
		height = dm.heightPixels/9f;

由于不是在Activity中获取长宽,所以需要通过mContext.getSystemService获取WindowManager,mContext可以通过构造函数传递

下面简单介绍一下WindowManager:

整个Android的窗口机制基于 WindowManager,它是全局的。这个接口可以添加view到屏幕,也可以从屏幕删除view。它面向的对象一端是屏幕,另一端就是View,直接忽略我们熟悉的Activity或者Dialog。其实Activity或者Diolog底层的实现也是通过WindowManager来完成的。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年02月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 当一个view对象创建时,android并不知道其大小,所以getWidth()和getHeight()返回的结果是0,真正大小是在计算布局时才会计算
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档