为了账号安全,请及时绑定邮箱和手机立即绑定

以像素为单位获取屏幕尺寸

以像素为单位获取屏幕尺寸

慕妹3242003 2019-05-25 15:47:51
以像素为单位获取屏幕尺寸我创建了一些自定义元素,我想以编程方式将它们放置在右上角(n顶部边缘的m像素和右边缘的像素)。因此我需要获得屏幕宽度和屏幕高度,然后设置位置:int px = screenWidth - m;int py = screenHeight - n;如何获得screenWidth并screenHeight在主要活动?
查看完整描述

4 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

一种方法是:


Display display = getWindowManager().getDefaultDisplay(); 

int width = display.getWidth();

int height = display.getHeight();

它已弃用,您应该尝试使用以下代码。前两行代码为您提供了DisplayMetrics对象。该对象包含像heightPixels,等字段widthPixels。


DisplayMetrics metrics = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(metrics);


int height = metrics.heightPixels;

int width = metrics.widthPixels;


查看完整回答
反对 回复 2019-05-25
?
皈依舞

TA贡献1851条经验 获得超3个赞

它可能无法回答你的问题,但知道(当我提出这个问题时我自己正在寻找它)可能是有用的,如果你需要一个View的维度,但你的代码在布局尚未布局时正在执行(例如在onCreate())你可以设置一个ViewTreeObserver.OnGlobalLayoutListenerwith View.getViewTreeObserver().addOnGlobalLayoutListener()并放置需要视图维度的相关代码。布局布局后将调用侦听器的回调。


查看完整回答
反对 回复 2019-05-25
?
繁星coding

TA贡献1797条经验 获得超4个赞

如果你想支持precomb,你需要在API 13之前提供向后兼容性。例如:

int measuredWidth = 0;int measuredHeight = 0;WindowManager w = getWindowManager();if (Build.VERSION.SDK_INT >= 
Build.VERSION_CODES.HONEYCOMB_MR2) {
    Point size = new Point();
    w.getDefaultDisplay().getSize(size);
    measuredWidth = size.x;
    measuredHeight = size.y;} else {
    Display d = w.getDefaultDisplay();
    measuredWidth = d.getWidth();
    measuredHeight = d.getHeight();}

当然,已弃用的方法最终会从最新的SDK中取出,但我们仍然依赖大多数拥有Android 2.1,2.2和2.3的用户,这就是我们留下的。


查看完整回答
反对 回复 2019-05-25
  • 4 回答
  • 0 关注
  • 731 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信