首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Parallax Live墙纸滚动过远

Parallax Live墙纸滚动过远
EN

Stack Overflow用户
提问于 2015-10-26 09:01:30
回答 1查看 281关注 0票数 1

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

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

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

这在大多数手机上都能正常工作,但由于某些原因,在一些LG手机上,图片滚动得太远。例如,在分辨率为1920x1080的LG G2上,有四个主屏幕,在第三个主屏幕(从左侧滑动时),图像的右侧10%左右开始闪烁,整个第四个主屏幕也显示出闪烁失真。

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

我已经将日志语句添加到onOffsetsChanged方法中,下面是我从xOffset和xPixelsOffset中获得的结果:

屏幕1: xPixelOffset: 0.0 xOffset: 0.0

屏幕2: xPixelOffset:-360.0 xOffset: 0.3334

屏幕3: xPixelOffset:-720.0 xOffset: 0.6667

屏幕4: xPixelOffset:-1080.0 xOffset: 1.0

我已经在我的Note3上尝试了同样的代码,一切运行正常。这款手机的分辨率与LG G2相同(尽管屏幕更大)(不同之处在于,G2的高度略高一些(1920比1776),因为usable底部有一个菜单栏,可以从可用的主屏幕中分离出来)。

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

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-10-26 10:24:50

在处理了一段时间后,我仍然不明白为什么会发生这种情况,但我找到了一种方法来解决它。我没有在draw()方法中使用xPixelOffset,而是使用了一个自定义变量mmPixel,它的计算公式如下:

代码语言:javascript
复制
mmPixel = (float) (((xOffset *.5) * screenWidth) * -1);

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33336936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档