Android学习——ViewPage实现多页面滑动效果
第一步
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><android.support.v4.view.ViewPagerandroid:id="@+id/viewPager"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"><android.support.v4.view.PagerTitleStripandroid:id="@+id/PagerTitleStrip"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="top"></android.support.v4.view.PagerTitleStrip></android.support.v4.view.ViewPager></RelativeLayout>
第二步建立三个tab页,用最简单的线性布局即可。
第三部
packagexiaocool.net.viewpager2;importandroid.os.Bundle;importandroid.support.v4.view.PagerAdapter;importandroid.support.v4.view.PagerTitleStrip;importandroid.support.v4.view.ViewPager;importandroid.support.v7.app.ActionBarActivity;importandroid.view.LayoutInflater;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.View;importandroid.view.ViewGroup;importjava.util.ArrayList;importjava.util.List;publicclassMainActivityextendsActionBarActivity{privateViewPagerviewPager;privatePagerTitleStrippagerTitleStrip;privateMyAdapteradapter=null;privateList<View>list=null;//装载已加载的界面privateList<String>title=null;//装载已加载的界面对应的标题privateLayoutInflaterinflater=null;//声明一个动态布局对象@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);viewPager=(ViewPager)this.findViewById(R.id.ViewPager);pagerTitleStrip=(PagerTitleStrip)this.findViewById(R.id.PagerTitleStrip);adapter=newMyAdapter();//加载布局inflater=LayoutInflater.from(MainActivity.this);//第一次被加载的布局对象Viewtab=inflater.inflate(R.layout.tab1,null);list=newArrayList<View>();list.add(tab);title=newArrayList<String>();title.add("title");//先初始化页面viewPager.setAdapter(adapter);viewPager.setOnPageChangeListener(newViewPager.OnPageChangeListener(){@OverridepublicvoidonPageScrolled(inti,floatv,inti2){}@OverridepublicvoidonPageSelected(inti){}//当点击当前页面,还没有产生侧滑是主要再次完成界面的加载//在这里开启线程去加载网络的数据,更新ui的操作@OverridepublicvoidonPageScrollStateChanged(inti){Viewview=inflater.inflate(R.layout.tab1,null);list.add(view);title.add("newview");//刷新数据adapter.notifyDataSetChanged();}});}//布局适配器publicclassMyAdapterextendsPagerAdapter{@OverridepublicintgetCount(){returnlist.size();}//初始化适配器@OverridepublicObjectinstantiateItem(ViewGroupcontainer,intposition){((ViewPager)container).addView(list.get(position));returnlist.get(position);}//从一个布局到另一个布局,销毁前一个布局@OverridepublicvoiddestroyItem(ViewGroupcontainer,intposition,Objectobject){//super.destroyItem(container,position,object);((ViewPager)container).removeView(list.get(position));}//得到每一个界面的布局@OverridepublicCharSequencegetPageTitle(intposition){returntitle.get(position);}@OverridepublicbooleanisViewFromObject(Viewview,Objecto){returnview==o;//判断当前view和Object是否是同一个对象}}@OverridepublicbooleanonCreateOptionsMenu(Menumenu){//Inflatethemenu;thisaddsitemstotheactionbarifitispresent.getMenuInflater().inflate(R.menu.menu_main,menu);returntrue;}@OverridepublicbooleanonOptionsItemSelected(MenuItemitem){//Handleactionbaritemclickshere.Theactionbarwill//automaticallyhandleclicksontheHome/Upbutton,solong//asyouspecifyaparentactivityinAndroidManifest.xml.intid=item.getItemId();//noinspectionSimplifiableIfStatementif(id==R.id.action_settings){returntrue;}returnsuper.onOptionsItemSelected(item);}}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。