尽快将PageTransformer应用于PagerView

时间:2013-01-11 16:25:47

标签: android android-viewpager

我有一个PageTransfomer应用于ViewPager,它运行良好,但我想在将PageTransformer设置为ViewPager后立即启动页面转换。 我已经尝试过了:

  • setCurrentItem(int)的
  • setCurrentItem(int,true)
  • beginFakeDrag(),fakeDragBy(float),endFakeDrag()
  • 无效()
  • getAdapter()。notifyDataSetChanged()

我在我的活动的onCreate中尝试了所有这些,但也许我错了。

有没有人有线索?

由于

2 个答案:

答案 0 :(得分:5)

根据Oleg的回答,我的应用使用了以下代码。

我的补充是检查beginFakeDrag()_invalidatePageTransformer的返回结果。

我从

中拨打sendInvalidatePageTransformer()
    当方向发生变化时
  • onConfigurationChanged()
  • 在我的片段中的LoaderCallback<Cursor> - 方法

    private Handler handler = new Handler()
    {
            public void handleMessage(Message msg)
            {
                    switch(msg.what)
                    {
                            case 0:
                                    _invalidatePageTransformer();
                                    break;
                    }
            }
    };
    
    private void _invalidatePageTransformer()
    {
            //no need to invalidate if we have no adapter or no items
            if (this.getAdapter() != null && this.getAdapter().getCount() > 0)
            {
                    //import check here, only fakeDrag if "beginFakeDrag()" returns true
                    if (this.beginFakeDrag())
                    {
                            this.fakeDragBy(0f);
                            this.endFakeDrag();
                    }
            }
    }
    
    public void sendInvalidatePageTransformer()
    {
            this.handler.sendEmptyMessage(0);
    }
    

编辑:注意:此代码位于自定义ViewPager子类

答案 1 :(得分:2)

尝试以下其中一项:

  1. 将代码放入onPostCreate()
  2. 将代码放入处理程序中;即new Handler().post(new Runnable() { /* your code */ });