如何在Android模拟器上实现1:1像素?

5
我创建了一个没有屏幕缩放的AVD,但是像素与我的屏幕不匹配。 有什么解决方法吗?

enter image description here

屏幕配置为720宽,但在我的屏幕上显示为413。
编辑:根据@Fallenreaper的回答,进行了更多的实验:
如果我在浏览器中加载一个500像素宽的图像,它仍然比屏幕大(原本应该是720像素宽的)。

enter image description here

这里是一张500像素的图片,附带两个屏幕截图,向右滚动以显示它比720像素的屏幕要大。

编辑2:可能与这个有关 http://www.quirksmode.org/blog/archives/2010/04/a_pixel_is_not.html


根据这个问题的标题,我期望得到的答案是如何确切地查看设备屏幕的外观,特别是如果设备的分辨率高于我的显示器所能容纳的分辨率。我找到的最佳答案是使用模拟器的“截图”(相机图标)功能。这将在桌面上保存一个以模拟设备全分辨率命名的文件。 - ToolmakerSteve
2个回答

4
当您从Android Virtual Device Manager启动模拟器时,您必须勾选Scale display to real size,然后指定Screen Size (in)Monitor dpi,以计算出Scale值为1.0(如果您使用的是OSX上的retina显示器,则为0.50)。
在我的情况下,我指定了一个4.7英寸屏幕尺寸和一个160监视器dpi,得到了0.50比例。当我对模拟器进行截图时,它现在是像素对像素地呈现出我期望在设备上看到的内容。
您还可以在从命令行启动模拟器时指定命令行选项-scale 1.0
如果您的模拟器已经在运行,您可以通过发送window scale 1.0来使用emulator console调整比例。这对我在Retina MBP上使用来说太大了。

使用adb devices查找您的运行模拟器。您应该看到如下输出:

$ adb devices
List of devices attached 
emulator-5554   device

然后,您可以连接到设备并发送比例命令:
$ telnet localhost 5554
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Android Console: type 'help' for a list of commands
OK
window scale .50
OK
^]
telnet> quit
Connection closed.

而且你可以在脚本中使用netcat来完成:

$ echo 'window scale 0.50' | nc localhost 5554

“no scaling”选项不就是这个意思吗?如果是这样,为什么我不能在一个(缩放或未缩放的)720像素虚拟设备屏幕内显示一个500像素的屏幕呢? - gcb

0
每个设备的像素密度都不同,因此如果您想将其调整为1:1比例,则需要确定设备的像素密度,并与主机计算机进行比较...然后相应地进行缩放。
不同的像素密度会导致一个比另一个更大,因此如果您正在设计屏幕,则文本框看起来会很正常,例如30x150,但在设备上,30x150会小得多。
来源:我从事iOS和Android Web App Dev for WebViews,我每天都会遇到这个问题。

好的观点,但每个屏幕的dpi都是固定的。如果模拟器在我的桌面上运行,除非软件在软件中进行缩放,否则不可能有不同的dpi。否则,它不仅会看起来大小不同,而且还会模糊不清。模拟器是像素完美的,这意味着它确实是418px,无论我的显示器使用的dpi是多少。您可以通过我放置的图像测试来确认。 - gcb
不同的模拟器模拟不同的手机、屏幕、操作系统等。由于一些硬件问题,我并不使用模拟器。只需购买一部安卓手机并使用即可 :) 模拟器存在隐藏的开销成本,这会使某些功能变慢或者根本无法实现。 - Fallenreaper
模拟器在2016年非常, 非常快。但是控制工具现在非常有问题。希望能够拥有1:1像素。 - Lassi Kinnunen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接