Android:如何在ViewPager加载页面时处理事件?

时间:2016-01-03 21:45:06

标签: android android-viewpager

我已经为ViewPager实现了自动滚动。但是我更早地调用了这个startAutoScroll()方法,甚至在页面实际加载或用户可见之前。这会导致崩溃。

我希望在用户可以看到所有页面后启动自动滚动。当页面实际可见时,请建议如何处理通知。

这是我的startAutoScroll方法。

void startAutoScroll() {
     if (handler == null) {
        new Thread(new Runnable() {
            public void run() {
                handler = new Handler(Looper.getMainLooper()){
                    public void handleMessage(android.os.Message msg) {
                        viewPager.setCurrentItem(viewPager.getCurrentItem() + 1, true);
                    }
                };

                handler.postDelayed(10,10);
            }
        }).start();
    }

    r = new Runnable() {
        public void run() {
            handler.postDelayed(r, 10);

            Message msg = handler.obtainMessage();
            handler.sendMessage(msg);            
        }
    };
}

我在How to determine when Fragment becomes visible in ViewPager

得到了一个很好的解决方案

1 个答案:

答案 0 :(得分:0)

我通过ViewTreeObserver

得到了答案
ViewTreeObserver vto = ViewPager.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new   ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        startAutoScroll();
    ViewPager.getViewTreeObserver().removeGlobalOnLayoutListener(this);
    }
});