我有两种不同的平板电脑:
就实际物理(现实世界)规范而言,这些平板电脑都非常接近 160dpi(其中
1px
相当于 1dp
)。系统报告它们正好是 160dpi。没关系,这里没什么大不了的。我还有一个辅助显示器。它与我的 10.1"平板电脑具有相同的物理(实际)规范。但是,当我将它连接到两个不同的平板电脑并使用它来显示 Android
Presentation
时,辅助显示器将报告完全不同的 DisplayMetrics
。连接到 10.1"平板电脑时,辅助显示屏会报告:
连接到 15.6"平板电脑时,辅助显示屏会报告:
什么可能导致这种情况?
该应用程序本身就像石头一样愚蠢。我所做的就是创建一个
Presentation
对象并在主显示器和辅助显示器上显示虚拟棋盘布局。我已经尝试同时使用
MediaRouter
和 DisplayManager
用于查找我的 Display
的 API并创建我的Presentation
.他们都给出了相同的结果。@Override
protected void onResume() {
super.onResume();
MediaRouter mediaRouter = (MediaRouter) getSystemService(Context.MEDIA_ROUTER_SERVICE);
MediaRouter.RouteInfo route = mediaRouter.getSelectedRoute(MediaRouter.ROUTE_TYPE_LIVE_VIDEO);
if (route != null) {
Display display = route.getPresentationDisplay();
if (display != null) {
Presentation presentation = new MyPresentation(this, display);
presentation.show();
}
}
}
@Override
protected void onResume() {
super.onResume();
DisplayManager manager = (DisplayManager) getSystemService(Context.DISPLAY_SERVICE);
Display[] displays = manager.getDisplays(DisplayManager.DISPLAY_CATEGORY_PRESENTATION);
if (displays.length > 0) {
Presentation presentation = new MyPresentation(this, displays[0]);
presentation.show();
}
}
最佳答案
我认为您可以从物理显示器创建一个 VirtualDisplay。
创建 VirtualDisplay 时,您可以更改密度 dpi。
displayManager.createVirtualDisplay(
"VirtualDisplay",
virtualDisplayWidth,
virtualDisplayHeight,
designedDensityDpi,
surfaceView.getHolder().getSurface(),
VIRTUAL_DISPLAY_FLAG_PRESENTATION
);
关于android - 辅助显示器 DisplayMetrics 依赖于主显示器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55695530/