用viewPager实现滑屏功能

作者: 五人行 | 来源:发表于2017-01-10 09:00 被阅读100次

    一、ViewPager是一个Fragment容器;FragmentManager要求任何用作Fragment容器的视图必须要有资源ID。

    二、自定义资源(values/ids.xml)

    <resources>

    <item type="id" name="viewPager"/>

    </resources>

    三、在Activity中把viewPager设置为内容视图

    protected void onCreate(@Nullable Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    mViewPager=new ViewPager(this);

    mViewPager.setId(R.id.viewPager);

    this.setContentView(this.mViewPager);

    }

    四、为ViewPager对象设置适配器

    @Override

    protected void onCreate(@Nullable Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    mViewPager=newViewPager(this);

    mViewPager.setId(R.id.viewPager);

    this.setContentView(this.mViewPager);

    this.mCrimes= CrimeLab.get(this).getCrimes();

    FragmentManager manager=this.getSupportFragmentManager();

    this.mViewPager.setAdapter(new FragmentStatePagerAdapter(manager) {

    @Override

    publicFragment getItem(intposition) {

    Crime crime=CrimePagerActivity.this.mCrimes.get(position);

    return CrimeFragment.newCrimeFragment(crime.getmId());

    }

    @Override

    public int getCount() {

    return CrimePagerActivity.this.mCrimes.size();

    }

    });

    }

    五、FragmentStatePagerAdapter与FragmentPagerAdapter

    区别:在卸载不需要的Fragment时,二者处理的方式不一样。FragmentStatePagerAdapter会销毁不需要的Fragment,事务提交后,会将Fragment从Activity的FragmentManager中删除。

    FragmentPagerAdapter只会删除Fragment视图,而Fragment实例保留在FragmentManager中。

    通常来说,FragmentStatePagerAdapter更节省内存。

    相关文章

      网友评论

        本文标题:用viewPager实现滑屏功能

        本文链接:https://www.haomeiwen.com/subject/fclhbttx.html