Android编程权威指南(第二版)第十一章-使用ViewPager
为了方便用户的体验,一般在详细页面中可以添加左右滑动切换页面,那么可以为UI添加ViewPager,用户可滑动屏幕,切换查看不同列表项的明细页面。
第一步,创建以ViewPager为根视图的布局文件,activity_pager.xml
<android.support.v4.view.ViewPager
xmlns:android="....."
android:id="@+id/activity_view_pager"
....../>
注意,必须使用ViewPager的包名全称(android.support.v4.view.ViewPager)
第二步,创建PagerActivity,创建并管理ViewPager
ViewPager需要借助于PagerAdapter提供视图,ViewPager与PagerAdapter间的配合很复杂。Google提供了PagerAdapter的子类FragmentStatePagerAdapter,它能协助处理许多细节问题。
public class CrimePagerActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pager);//绑定布局文件
mViewPager = (ViewPager) findViewById(R.id.activity_view_pager);//得到viewPager组件
FragmentManager fragmentManager = getSupportFragmentManager();//得到FragmentManager实例
mViewPager.setAdapter(new FragmentStatePagerAdapter(fragmentManager) {
@Override
public Fragment getItem(int position) {......}
@Override
public int getCount() {.......}
});
}
}
第三步,配置使用PagerActivity-创建newIntent方法
public static Intent newIntent(Context packageContext, .....) {
Intent intent = new Intent(packageContext, PagerActivity.class);
intent.putExtra(......);
return intent;
}
然后在点击事件中调用newIntent创建Intent,就可以显示ViewPager了。
....部分,指的是,可以传进参数,通常是,放进intent中来指定ViewPager应该显示的是哪一个详细信息,一般是放ID,然后在onCreate中使用getIntent().getSerializableExtra(键)来得到ID,来从模型得到需要绑定在视图上的数据。
MORE:FragmentStatePagerAdapter 与 FragmentPagerAdapter
FragmentPagerAdapter是另外一种可用的PagerAdapter,其用法与FragmentStatePagerAdapter基本一致。唯一的区别在于:卸载不再需要的fragment时,各自采用的处理方法有所不同。
FragmentStatePagerAdapter会销毁不需要的fragment.事务提交后,activity的FragmentManager中的fragment会被彻底移除。 FragmentStatePagerAdapter类名中的“ state”表明:在销毁fragment时,可onSaveInstanceState(Bundle)方法中保存fragment的Bundle信息。用户切换回来时,保存的实例状态可用来恢复生成新的fragment.
相比之下,FragmentPagerAdapter有不同的做法。对于不再需要的fragment, FragmentPagerAdapter会选择调用事务的detach(Fragment)方法来处理它,而非remove(Fragment)方法。也就是说, FragmentPagerAdapter只是销毁fragment的视图, fragment实例还保留在FragmentManager中。因此, FragmentPagerAdapter创建的fragment永远不会被销毁。
通常来说,对于要使用大量pager的应用来说,使用FragmentStatePagerAdapter更节省内存。 另一方面,如果用户界面只需要少量固定的fragment,则FragmentPagerAdapter是个安全、合适的选择。
ViewPager的工作原理其实还是比较复杂的上述讲的只是满足一般的应用,但是如果需要更加准确详细的介绍内容,还需要查阅更多的资料。

浙公网安备 33010602011771号