如何在Android中获取屏幕尺寸作为像素

我创建了一些自定义元素,并希望以编程方式将它们放置在右上角(n上边缘的像素和m右边缘的像素)。因此,我需要获得屏幕宽度和屏幕高度,然后设置位置:

intpx=屏幕宽度-m;
int py=屏幕高度-n;

如何在主要活动中获得screenWidthscreenHeight

如果希望以像素为单位显示尺寸,可以使用getSize

Display Display=getWindowManager().getDefaultDisplay();
点大小=新点();
display.getSize(size);
int width=size.x;
整数高度=大小y;

如果您不在活动中,您可以通过窗口服务获得默认的显示

WindowManager wm=(WindowManager)context.getSystemService(context.WINDOW\u服务);
Display Display=wm.getDefaultDisplay();

如果您处于一个片段中,并且想要完成此任务,只需使用Activity.WindowManager(在Xamarin.Android中)或getActivity().getWindowManager()(在java中)

在引入getSize之前(在API级别13中),您可以使用现在不推荐使用的getWidthgetHeight方法:

Display Display=getWindowManager().getDefaultDisplay();
int width=display.getWidth();//不赞成
int height=display.getHeight();//不赞成

然而,对于用例,您正在描述布局中的边距/填充似乎更合适

另一种方法是:DisplayMetrics

一种描述显示器一般信息的结构,如大小、密度和字体比例。要访问DisplayMetrics成员,请初始化如下对象:

DisplayMetrics=新的DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(度量);

我们可以使用widthPixels获取以下信息:

&引用;显示器的绝对宽度(以像素为单位)。”

示例:

Log.d(“ApplicationTagName”,px中的显示宽度为+metrics.widthPixels);

API 30级更新

final WindowMetrics=windowManager.getCurrentWindowMetrics();
//获取所有不包括插入的内容
final WindowInsets WindowInsets=metrics.getWindowInsets();
Insets Insets=windowInsets.getInsetsIgnoreVisibility(windowInsets.Type.navigationBars()
|WindowInsets.Type.displayCutout());
int insetsWidth=insets.right+insets.left;
int insetsHeight=insets.top+insets.bottom;
//显示#getSize报告的旧版大小
final Rect bounds=metrics.getBounds();
最终尺寸legacySize=新尺寸(bounds.width()-InsertsWidth,
bounds.height()-insertseight);

发表评论