不同设备上Android动画不一致

7
我正在构建的应用程序在开始下一个活动之前具有简单的图像按钮动画(旋转)。我已经在模拟器和5个不同的设备上进行了测试:
  • 三星GT-I5500

    三星Galaxy Nexus

    三星Galaxy s2

    摩托罗拉 Razr Maxx

    HTC(我记不清型号了)

除了Nexus外,所有型号的设备都可以正常运行该动画。 在Nexus上,设备会等待动画持续时间(500ms)后再开始下一个活动,因此导致了令人烦恼的(对于用户来说似乎解释不清楚的)延迟。 所有设备均运行Jelly Bean,除了GT-I5500。
问题如下:
1)为什么即使在运行相同版本的操作系统时,该动画也可以在某些设备上正常工作而在其他设备上则不行?
2)是否有办法检查设备是否“接受”该动画?(最初我以为这与SDK版本有关,但事实并非如此)
1个回答

5

音频、视频、GPU加速都是硬件相关的。你可能会陷入Java是跨平台的以及存在接口和继承的误区之中。

实际上,市场实现了以下目标:

  • 每个制造商都希望拥有特殊的功能来吸引新客户并赚取更多利润。
  • 有些程序是通过其他程序创建的,这些程序可能存在漏洞,如果它能崩溃 => 它一定已经崩溃了,因为没有任何测试可以覆盖100%的情况。

我理解这一点,但是假设至少三星S2和三星Nexus运行相同的操作系统,它们会以相同的方式解释动画,这样不是更安全吗? - LMVogel
@LMVogel 那两部“三星”手机非常不同,一部是三星的,另一部是由三星制造但是它是一个谷歌设备。每个设备上的操作系统都会有很大的不同,因为在非Nexus设备上,制造商会修改Android以使他们的手机与众不同,正如matheszabi所说 - 通常运营商也会这样做。一个很好的例子是,在某些国家,三星的手机才刚刚获得JellyBean,而Nexus设备已经使用了几个月,因为三星正在进行修改。你的模拟器可能会有所不同,具体取决于它们的准确性,但是对于真实设备来说,情况就是这样。 - seaplain
所有这些都说了,有没有办法知道设备会如何表现?如果它不会“接受”动画,是否有方法绕过它?正如我在问题中所说的,不执行动画的设备似乎只是卡住了,直到它进入下一个活动。 - LMVogel
我认为你不可能知道,因为理论上它是跨平台的并且可以运行。实际上,只有通过以下方式才有可能:你需要在每一个现有的手机上尝试(超过10,000种),或者只需尝试最常用的手机类型,或者只能测试你所拥有的设备,构建内部数据库并在运行时检查你的数据库中的手机是否像预期一样真正运行。 - user529543

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