9

我有一个Activity由 XML 制作的,我已经将它的背景设置为我的可绘制文件夹中的背景图像。

在同一个活动中,我创建了一个ViewPager允许在视图之间来回滑动。里面的所有视图ViewPager都包含一个图像。

每当我向左或向右滑动时,过渡都很慢。

我尝试通过将其设置为白色(#fff)来删除背景图像,所有的滞后都消失了。效果很好!问题是我确实需要该应用程序的背景。

有什么方法可以优化背景图像或其他东西,这样滑动会再次顺利进行吗?由于滞后,目前使用起来太令人沮丧了。

我还尝试将图像裁剪为小尺寸,然后将其拉伸到屏幕上,但我没有注意到任何性能改进。ViewPager此外,当我使用 TextViews 对其进行测试时,也不是位于 中的图像故障,而是存在相同的延迟。

4

3 回答 3

16

经过一番搜索,我自己弄清楚了,我会在这里为遇到此问题的其他人留下答案。

显然,当图像被拉伸时,android 在渲染背景时会遇到很多麻烦。至少在运行 Android 3.2 的 Galaxy Tab 10.1 上是这样。

我使用的背景图片是一张木地板的图片,因为它是同一块木板的重复图案,我设法将图像从 1440 x 1050 裁剪到大约 350x500。当将此图像用作背景并在整个屏幕上拉伸时,性能会出现巨大下降。然而,当在左上角显示为单个图像时,它工作得很好。

使用这里描述的方法,我设法在整个屏幕上重复图像而不是拉伸它。令人惊讶的是,我注意到完全没有额外的压力,而且过渡非常顺利。

所以就在这里,希望这能帮助其他有同样性能问题的人!

于 2012-04-05T09:47:16.557 回答
15

晚年的另一个解决方案:您必须将您的可绘制对象放入适当的文件夹中。我在可绘制文件夹中有我的 background.png 并且它滞后,因为它与拉伸作斗争。我不能使用可重复的,因为我的手机上没有那种模式。

但是当我把我的可绘制背景放在 drawable-xhdpi 中时,工作完全没有任何延迟。因此,以供将来参考,这也可能解决您的问题。参考这个自行解决的问题:ViewPager 在三星 S4 上真的很慢

于 2014-11-03T11:27:03.503 回答
2

使用寻呼机刷卡时,这个技巧对我有很大帮助。它基于硬件加速。

       viewPager.setOnPageChangeListener(new OnPageChangeListener() {
                @Override
                public void onPageScrollStateChanged(int scrollState) {
                    if (scrollState != ViewPager.SCROLL_STATE_IDLE) {
                        final int childCount = viewPager.getChildCount();
                        for (int i = 0; i < childCount; i++)
                            viewPager.getChildAt(i).setLayerType(View.LAYER_TYPE_NONE, null);
                    }
                }

          ....
});

希望它会有所帮助。

于 2016-03-08T10:23:19.237 回答