【问题标题】:Android ViewPager performance issues when using background使用后台时的 Android ViewPager 性能问题
【发布时间】:2012-04-18 23:27:33
【问题描述】:

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

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

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

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

有没有什么办法可以优化背景图片或者什么东西可以让滑动再次顺畅? 由于滞后,目前使用起来太令人沮丧了。

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

【问题讨论】:

    标签: android android-layout android-viewpager


    【解决方案1】:

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

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

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

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

    就是这样,希望这能帮助其他遇到同样性能问题的人!

    【讨论】:

      【解决方案2】:

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

      但是当我将我的可绘制背景放入 drawable-xhdpi 时,工作完全没有任何延迟。因此,以供将来参考,这也可能解决您的问题。参考这个自行解决的问题:ViewPager really slow on Samsung S4

      【讨论】:

      • 这太棒了,我的 Moto X 出现了问题,只需将可绘制对象处理为 drawable-xhdpi 即可解决问题!
      【解决方案3】:

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

             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);
                          }
                      }
      
                ....
      });
      

      希望它会有所帮助。

      【讨论】:

        猜你喜欢
        • 2011-01-13
        • 1970-01-01
        • 2021-02-08
        • 2019-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多