2012-10-18 65 views
1

在我的应用程序中我有一个预览屏幕。在一台设备(LG,Android 2.2,320x480屏幕)和另一台(HTC,Android 2.3,480x800屏幕)一切正常。在这两种情况下,支持的预览尺寸列表都包含完全符合屏幕尺寸的预览尺寸列表,我选择它并且图像非常完美。 问题来自另一个设备,有一个屏幕类似于第一个(三星,Android 2.3,320x480屏幕)。无论我如何选择适合屏幕尺寸的预览尺寸(如以前的情况),图像不会保留其纵横比;圆圈出现椭圆形;图像沿着屏幕的短轴被挤压。看起来硬件本身,为了获得320x480预览,挤压图像(相机的外形尺寸为4:3,而屏幕的外形尺寸为3:2)。 因此,为了适应相机的外形尺寸(尺寸:360x480),我修改了预览显示视图的布局参数,这部分解决了问题;实际上,为了完全解决问题,我必须设置380x480(! !!) 事实上,我找不到任何可以告诉我这种不同行为的API,这样我就可以自动补偿它,甚至连Camera.Parameters.getHorizontalViewAngleCamera.Parameters.getHorizontalViewAngle似乎都没有帮助;它们给出了相同的值在所有三款器件的! 谁能帮助我?预览高宽比在不同设备上有所不同

回答

3

顺藤摸瓜后,即包括编写特殊的代码,以检查如何预览实际上是显示在屏幕上,这是我发现了什么。 在一个设备(LG E-720),预览图像按照t的顺序裁剪Ø获得3:2的外形尺寸,然后调整大小以适应屏幕。保留长宽比: enter image description here

在第二个设备(Samsung ACE)上,预览图像显示为以不同方式裁剪,导致5:4图像(!?),然后调整大小以适合在屏幕上。由于不同的外观因素,屏幕上的图像出现挤压。: enter image description here

我已检查是否有软件更新可用于第二个设备,但这并不适用于此案例。因此,为了在屏幕上获得或多或少正确的图像,我已将目标视图定义为384像素高;这实际上导致裁剪恢复正确的宽高比。然而,由于原始裁剪是水平不对称的,因此它不会补偿水平偏移。

+0

根据我的经验,如果不是所有的三星设备都会出现这种问题。我找不到比我的代码库中有永久性开关更好的解决方案..我不喜欢这个。 – Vlad

相关问题