1

我有一个非常相似的问题: ViewPager + SurfaceView = 导航回活动时的长时间延迟

除了我使用的是 API 10,所以我没有使用片段。

我在 ViewPager 中有 SurfaceViews - 我工作得很好,除了当我滚动到新页面时,绘制需要一段时间。直到 SurfaceView 在屏幕上可见时才会调用 SurfaceView.surfaceCreated 方法。我希望在调用 ViewPager 的 PagerAdapter.instantiateItem 并通过 addView 将 SurfaceView 添加到 ViewPager 时创建表面。有没有办法强制 SurfaceView 在那个时候创建​​一个表面?

我正在使用基于Awesome Pager 示例的代码

        @Override
        public Object instantiateItem(View collection, int position) {
            Log.i("Main Activity", "instantiateItem p:" + position);
            View p;
            if(position == 1){
                    // Page003 is a surfaceview
                p = new Page003(cxt, position);
            } else {
                    // in the future I will create more pages!
                p = new Page003(cxt, position);
            }
            ((ViewPager) collection).addView(p);

            return p;
        }

是否有类似于另一个问题的答案的方法 - 通过将 SurfaceView 包装在另一个视图中?我宁愿不要使代码不必要地复杂化。

4

1 回答 1

0

在您的 Viewpager 适配器中实现 onAttached() 运行处理程序 2 秒就是这样

这将在 2 秒后加载您的表面,不再有延迟

于 2017-07-08T16:51:04.373 回答