如何配置android模拟器以匹配实际设备的屏幕?

时间:2020-07-01 11:25:27

标签: android screen emulation

此问题与OnePlus 6T Android Emulator Screen Configuration Hardware Profile有关,在其中,我能够通过反复试验将仿真器的屏幕与实际设备匹配。现在,我正在尝试寻找一个公式来实现其他设备的功能。

我正在查看分别由以下内容返回的数据 Configuration DisplayMetrics

activity.getResources().getConfiguration().toString();
...
DisplayMetrics displayMetrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
displayMetrics.toString();

对于有问题的手机OnePlust 6T,其屏幕规格为:6.41英寸,2340 x 1080像素,上述输出为(设备):

配置{1.0 0 452mcc4mnc [zh_CN,pl_PL] ldltr sw411dp w411dp h812dp 420dpi nrml长hdr widecg端口夜力暗= 0手指 -keyb / v / h -nav / h winConfig = {mBounds = Rect(0,0-1080,2340)mAppBounds = Rect(0,80-1080,2214)mWindowingMode =全屏 mDisplayWindowingMode =全屏mActivityType =标准 mAlwaysOnTop =未定义mRotation = ROTATION_0} s.1}

DisplayMetrics {密度= 2.625 ”,宽度= 1080,高度= 2134, scaledDensity = 2.625,xdpi = 403.411,ydpi = 409.903}

将模拟器配置为与设备相同的规格时,输出为( EmuDev ):

配置{1.0 310mcc260mnc [zh_CN] ldltr sw360dp w360dp h708dp 480dpi nrml长端口手指qwerty / v / v -nav / h winConfig = {mBounds = Rect(0,0-1080,2196) mAppBounds = Rect(0,0-1080,2196)mWindowingMode =全屏mActivityType = standard} s.6}

DisplayMetrics {密度= 3.0 ,宽度= 1080,高度= 2196,scaledDensity = 3.0,xdpi = 480.0,ydpi = 480.0}}

最后,修改后的仿真器的输出设置为6.41 in和2643 x 1220是( EmuMod ):

配置{1.0 310mcc260mnc [zh_CN] ldltr sw406dp w406dp h809dp 480dpi nrml长端口手指qwerty / v / v -nav / h winConfig = {mBounds = Rect(0,0-1220,2499) mAppBounds = Rect(0,0-1220,2499)mWindowingMode =全屏mActivityType = standard} s.6}

DisplayMetrics {密度= 3.0 ,宽度= 1220,高度= 2499,scaledDensity = 3.0,xdpi = 480.0,ydpi = 480.0}

我的第一个猜测是要将模拟器的屏幕与设备的屏幕匹配,我必须将其dp w idth和 h (来自配置)的八分(请参见上面的粗体),并提出了以下公式:

EmuDev Density / Device Density * Spec Pixels = EmuMod Pixels

插入实际数字似乎可以确认这一点:

3.0 / 2.625 * 2340 = 2674 ( ~ 2643 )
3.0 / 2.625 * 1080 = 1234 ( ~ 1220 )

但是,由于模拟器的屏幕未镜像该设备的屏幕,因此无法将此公式应用于其他设备。关于如何调整的任何想法?还需要其他哪些指标?

为完整起见,以下是无法正常工作的设备的输出,规格为6.3英寸,1080 x 2220像素的Galaxy A9:

设备:

配置{1.1 452mcc1mnc [vi_VN] ldltr sw360dp w360dp h668dp 480dpi nrml长端口夜指-keyb / v / h -nav / h winConfig:{mBounds:Rect(0,0-1080, 2220)mAppBounds:Rect(0,0-1080,2076)mWindowingMode:fullscreen mDisplayWindowingMode:fullscreen mActivityType:standard mAlwaysOnTop:undefined mRotation:ROTATION_0} s.1 bts:0 ff:0 bf:0 themeSeq:0}

DisplayMetrics {密度:3.0 ,宽度:1080,高度:2076,scaledDensity:3.0,xdpi:409.432,ydpi:408.608}

EmuDev:

配置{1.0 310mcc260mnc [zh_CN] ldltr sw540dp w540dp h1038dp 320dpi lrg长端口手指qwerty / v / v -nav / h winConfig = {mBounds = Rect(0,0-1080,2220) mAppBounds = Rect(0,0-1080,2124)mWindowingMode =全屏mDisplayWindowingMode =全屏mActivityType =标准mAlwaysOnTop =未定义mRotation = ROTATION_0} s.1}

DisplayMetrics {密度= 2.0 ,宽度= 1080,高度= 2124,scaledDensity = 2.0,xdpi = 320.0,ydpi = 320.0}

和EmuMod(规格修改为720 x 1480):

配置{1.0 310mcc260mnc [zh_CN] ldltr sw480dp w480dp h914dp 240dpi lrg长端口手指qwerty / v / v -nav / h winConfig = {mBounds = Rect(0,0-720,1480) mAppBounds = Rect(0,0-720,1408)mWindowingMode =全屏mDisplayWindowingMode =全屏mActivityType =标准mAlwaysOnTop =未定义mRotation = ROTATION_0} s.1}

DisplayMetrics {密度= 1.5 ,宽度= 720,高度= 1408,scaledDensity = 1.5,xdpi = 240.0,ydpi = 240.0}

0 个答案:

没有答案
相关问题