如何通过计时器显示元素?

How to show element by timer?

我有问题。我有一个带有 ViewPager 的 Activity,其中有一些片段。

在我的第一个片段中,我有一些元素。让我们说一个ImageView,TextView。如何在完全打开ViewPager页面的情况下通过定时器让它们可见?!

我在我的 MainActivity.java 文档中使用了下面的这段代码,使计时器可以看到该 ImageView,但它的工作方式不如我预期。当我想通过滚动转到下一页并触摸屏幕时,ImageView 消失了。为什么会这样?!

final ImageView mImageView = (ImageView) findViewById(R.id.earth);
mImageView.setVisibility(View.INVISIBLE);
mImageView.postDelayed(new Runnable() {
public void run() {
       mImageView.setVisibility(View.VISIBLE);
}}, 5000);

感谢任何帮助。谢谢!

我的新编辑:

// Initialize the ViewPager and set an adapter
        ViewPager pager = (ViewPager) findViewById(R.id.pager);
        pager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager()));

        // Bind the tabs to the ViewPager
        PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
        tabs.setViewPager(pager);
//open concrete page of ViewPager. setCurrentItem(index of page)
pager.setCurrentItem(1);

tabs.setOnPageChangeListener(new OnPageChangeListener() {
            //This method will be invoked when the current page is scrolled, either as part of a program initiated smooth scroll or a user initiated touch scroll.
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            //This method will be invoked when a new page becomes selected.
            @Override
            public void onPageSelected(int position) {
                final ImageView mImageView = (ImageView) findViewById(R.id.earth);
                mImageView.setVisibility(View.INVISIBLE);
                if (position == 0) {
                    mImageView.postDelayed(new Runnable() {
                        public void run() {
                            mImageView.setVisibility(View.VISIBLE);
                        }
                    }, 5000);
                }
            }

            //Called when the scroll state changes.
            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

我的问题是与 TABS 和 ViewPager 冲突。当我使用 tabs.setOnPageChangeListener(new OnPageChangeListener() 我与 pager.setCurrentItem(1) 有冲突;它在 Activity 首次打开时显示具体页面。在我的例子中,当 Activity 第一次打开但是 Tab 显示打开了第 1 页。为什么?!如何解决这个问题?!

我不会使用计时器。它要么开得太早,要么太晚,在此期间你的 UI 看起来很糟糕。使用寻呼机的事件来了解何时更新您的 UI。例如,您可以使用 OnPageChangedListener:

    pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
       @Override
       public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

       }

       @Override
       public void onPageSelected(int position) {
            // Now displaying page at position
       }

       @Override
       public void onPageScrollStateChanged(int state) {

       }
   };