gpt4 book ai didi

android - 视差动态壁纸滚动太远

转载 作者:行者123 更新时间:2023-11-30 01:48:46 26 4
gpt4 key购买 nike

我设计了一个使用视差滚动的动态壁纸。为了将壁纸缩放到我使用的用户屏幕的大小:

int height = getApplicationContext().getResources().getDisplayMetrics().heightPixels;

然后我通过将 height 除以图像的高度来缩放图像。在本例中,图像为 1000x563。这确保图像适合用户的高度尺寸,并且有足够的宽度用于视差滚动。

这在大多数手机上运行良好,但由于某些原因,在某些 LG 手机上,图片滚动得太远了。以LG G2为例,分辨率为1920x1080,有四个主屏,到第三个主屏(从左边滑动时),右边10%左右的画面开始闪烁,整个第四个主屏还显示闪烁失真。

我不明白为什么会这样,因为我使用的缩放器应该给我足够的宽度来滚动。 高度/563 = 3.1545923。当缩放器 3.1545923 乘以图像宽度 (1,000) 时,我得到 3,154。如果屏幕宽度是 1080,我应该只需要双倍的视差滚动,即 2,160。

我已将 Log 语句添加到 onOffsetsChanged 方法,这是我获得的 xOffset 和 xPixelsOffset 的结果:

屏幕 1:xPixelOffset:0.0x偏移量:0.0

屏幕 2:xPixelOffset:-360.0x偏移量:0.3334

屏幕 3:xPixelOffset:-720.0x偏移量:0.6667

屏幕 4:xPixelOffset:-1080.0x偏移量:1.0

我已经在我的 Note 3 上尝试过同样的代码,一切正常。该手机具有与 LG G2 完全相同的分辨率(尽管屏幕更大)(除了高度稍大(1920 对 1776),因为 G2 的底部有一个菜单栏,可以从可用的主屏幕上拿走)。

有什么想法吗?这几乎就像 LG 手机上的视差滚动比它应该滚动的更远,但它不应该因为上面的 xPixelOffset 值正确地从 0 到 1080。

谢谢。

最佳答案

在弄乱了一段时间后,我仍然不明白为什么会这样,但我找到了解决办法。我没有在我的 draw() 方法中使用 xPixelOffset,而是使用自定义变量 mmPixel,它是通过以下方式计算的:

mmPixel = (float) (((xOffset *.5) * screenWidth) * -1);

这基本上与使用 xPixelOffset 相同,不同之处在于它在每次滑动时只移动一半的距离。我仍然不明白为什么我需要除以二,因为偏移量是 1080 并且我的图像被缩放得更大,但如果其他人遇到这个问题,这应该可行。

这也解决了另一个我之前没有提到的问题,但是一些启动器(出于某种原因)无法将图像移动到应有的位置。例如,对于 Nova Launcher,使用 xPixelOffset 仅将图像总共移动了 360 像素。我不知道为什么有些启动器会这样做,但是放弃 xPixelOffset 并根据屏幕宽度和 xOffset 手动计算它也解决了这个问题。

关于android - 视差动态壁纸滚动太远,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33336936/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com