每次我在视图翻页器中改变或滑动页面时,都会调用onDraw()方法。

3
我在一个ViewPager的片段中有自定义视图。问题是,当我滑动ViewPager时,每次都会调用onDraw()方法。有人能建议我如何停止调用已经绘制完毕的onDraw()方法吗?
更多细节:
我有一个名为饼图(pie chart)的自定义视图类,它接受数据并为我绘制饼图,然后在片段中调用该类,并动态添加到布局中。第一次很好地工作,并平稳地绘制出饼图。但在滑动或页面更改时,饼图反复绘制,导致闪烁效果。

2
不调用onDraw方法在滑动时是没有问题的,否则您将完全看不到页面。 - pskink
@pskink,我已经添加了我的场景。除了在页面更改时每次调用自定义视图的onDraw()之外,一切都正常运行。 - Krishna Shrestha
因此,您需要优化您的onDraw方法。 - pskink
1个回答

0

我遇到了相同的问题。我使用了硬件加速来防止重复绘制。也许下面的代码对你有帮助。

public class MyPagerAdapter extends PagerAdapter {
    //...

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        MyView view = new MyView(context);
        container.addView(view);
        view.setLayerType(View.LAYER_TYPE_HARDWARE, null);

        return view;
    }

    //...
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接