本文主要介绍如何利用ViewPager、Fragment、PagerTabStrip实现多页面滑动效果。即google play首页、新浪微博消息(at、评论、私信、广播)页面的效果。ViewPager+Fragment组合为google推荐方式,比TabActivity+Activity的效率高的多。
这个效果相当好!
1、新建ViewPager的layout,内容如下
-
<?xmlversion="1.0"encoding="utf-8"?>
-
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
-
android:layout_width="match_parent"
-
android:layout_height="match_parent"
-
android:orientation="vertical">
-
-
<android.support.v4.view.ViewPager
-
android:id="@+id/viewPager"
-
android:layout_width="wrap_content"
-
android:layout_height="wrap_content"
-
android:layout_gravity="center">
-
<android.support.v4.view.PagerTabStrip
-
android:layout_width="wrap_content"
-
android:layout_height="wrap_content"
-
android:layout_gravity="top"/>
-
</android.support.v4.view.ViewPager>
-
</LinearLayout>
ViewPager用来管理layout并可以左右滑动显示各个页面数据,PagerTabStrip用来显示页面title,android:layout_gravity="top"表示title在顶部,可设置bottom等。
2、新建FragmentActivity页面
FragmentActivity页面含有ViewPager元素,可以用来显示Fragment,定义如下:
-
FragmentActivity页面
-
-
publicclassViewPagerDemoextendsFragmentActivity{
-
-
-
List<Fragment>fragmentList=newArrayList<Fragment>();
-
-
List<String>titleList=newArrayList<String>();
-
-
@Override
-
protectedvoidonCreate(BundlesavedInstanceState){
-
super.onCreate(savedInstanceState);
-
setContentView(R.layout.view_pager_demo);
-
-
ViewPagervp=(ViewPager)findViewById(R.id.viewPager);
-
fragmentList.add(newViewPagerFragment1("页面1"));
-
fragmentList.add(newViewPagerFragment1("页面2"));
-
fragmentList.add(newViewPagerFragment1("页面3"));
-
titleList.add("title1");
-
titleList.add("title2");
-
titleList.add("title3");
-
vp.setAdapter(newmyPagerAdapter(getSupportFragmentManager(),fragmentList,titleList));
-
}
-
-
-
-
-
-
-
classmyPagerAdapterextendsFragmentPagerAdapter{
-
-
privateList<Fragment>fragmentList;
-
privateList<String>titleList;
-
-
publicmyPagerAdapter(FragmentManagerfm,List<Fragment>fragmentList,List<String>titleList){
-
super(fm);
-
this.fragmentList=fragmentList;
-
this.titleList=titleList;
-
}
-
-
-
-
-
@Override
-
publicFragmentgetItem(intarg0){
-
return(fragmentList==null||fragmentList.size()==0)?null:fragmentList.get(arg0);
-
}
-
-
-
-
-
@Override
-
publicCharSequencegetPageTitle(intposition){
-
return(titleList.size()>position)?titleList.get(position):"";
-
}
-
-
-
-
-
@Override
-
publicintgetCount(){
-
returnfragmentList==null?0:fragmentList.size();
-
}
-
}
-
}
其中的myPagerAdapter集成自ragmentPagerAdapter,为ViewPager提供数据源。
onCreate函数得到ViewPager实例并设置数据源,getSupportFragmentManager表示得到Fragment管理器。ViewPagerFragment1表示具体的页面,见下面介绍。
3、新建Fragment页面
Fragment页面即为左右滑动需要显示的页面,新建类集成Fragment,并重写onCreateView函数即可。onCreateView函数相当于Activity的onCreate函数。如下:
-
publicclassViewPagerFragment1extendsFragment{
-
-
privateStringtext;
-
privateTextViewtv=null;
-
-
publicViewPagerFragment1(Stringtext){
-
super();
-
this.text=text;
-
}
-
-
-
-
-
@Override
-
publicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,BundlesavedInstanceState){
-
Viewv=inflater.inflate(R.layout.view_pager_fragment_demo1,container,false);
-
tv=(TextView)v.findViewById(R.id.viewPagerText);
-
tv.setText(text);
-
returnv;
-
}
-
}
简单效果如下:
分享到:
相关推荐
ViewPager和Fragment结合实现页面滑动,以及实现仿新浪欢迎页;
使用ViewPager和Fragment实现底部导航滑动Demo,可直接复用
Android利用ViewPager实现类微信的左右滑动效果,详细代码注解解析setOnPageChangeListener各参数意义以及使用方法
使用ViewPager + Fragment实现滑动切换页面的简单样例
利用TabLayout、ViewPager、Fragment实现滑动切换页面
android fragment viewpager +pagerTabStrip,实现多界面滑动。
TabLayout+ViewPager+Fragment实现分页滑动效果Demo
Android Studio使用ViewPager+Fragment实现仿微信滑动切换界面
使用TabLayout、ViewPager和Fragment实现即可点击又可滑动切换多页面的功能
并实例利用ViewPager,PagerAdapter和OnPageChangeListener实现圆点导航左右滑动效果,并实现了被滑动界面处理控件事件,同时通过Fragment实现两个页面切换效果
Android ViewPager和Fragment实现仿微信导航界面及滑动效果
ViewPager+Fragment实现选项卡效果滑动切换,滑动切换界面或者点击页卡切换
使用ViewPager+Fragment实现页面点击切换和手势滑动,页面很流畅,有动画效果
Android ViewPager Fragment实现选项卡
本资源为使用ViewPager和Fragment实现页面切换和底部导航栏的效果源码,建议配合Android应用开发--底部导航栏效果的一种实现方式(ViewPager&Fragment)文章查看。
android ActionBarTabs+ViewPager+Fragment 实现tab 滑动翻页效果
viewPager + fragment实现基础的页面滑动效果,Fragment+Fragment实现滑动
android ActionBarTabs+ViewPager+Fragment 实现tab滑动翻页效果,完整代码,多个例子,
TabLayout+TabItem+ViewPager+Fragment实现早期微信屏幕滑动效果
viewpager+fragment左右滑动实现动态加载数据。动态刷新fragment