Android笔记之ViewPager实现滑动页面
2013-09-24 20:24
351 查看
1、概述;
Viewpager的最大特点就是实现滑动的界面
多个页面的内容可以有两种填充方式:View(普通Activity下),Fragment(V4的Fragmentctivity或者Fragment下)
ViewPager的布局最好是在LinearLayout下写
2、main.xml添加Viewpager组件:
3、主要代码的步骤:
实例化Viewpager+获得ArrayList作为填充内容+setAdapter(ArrayList....)+新建类extends(FragmentState)PagerAdapter
+重写适配器的Constructor、getItem、getCount+根据情况决定是否监听onPageChangeListener
(1)Views作为填充内容:
(2)fragment作为填充内容:
FragmentActivity或Fragment下
fragment_1extendFragment
4、决定是否为ViewPager设置监听:每次切换页面的动作
5、为ViewPager添加标题
一般情况下ViewPager在多个页面下都是需要标题来作为指示的
标题有两种形式:
(1)使用view.PagerTabStrip来匹配各个页面:
main.xml部分:
代码部分:适配器需要添加privateList<String>titleList作为标题字符串集合
(2)监听onPageChanggeListener改变Textiew或RadioGroup的状态:
Textiew,Radioroup的触碰效果通过selector实现
按textView、RadioGroup改变页面,通过对其setOnClickListener实现
页面滑动改变对应按钮的改变通过Viewpager的监听
附加:图片指示器的实现只需在Viewpager监听实现
[b]Done![/b]
Viewpager的最大特点就是实现滑动的界面
多个页面的内容可以有两种填充方式:View(普通Activity下),Fragment(V4的Fragmentctivity或者Fragment下)
ViewPager的布局最好是在LinearLayout下写
2、main.xml添加Viewpager组件:
<android.support.v4.view.ViewPager android:id="@+id/Pager" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"> </android.support.v4.view.ViewPager>
3、主要代码的步骤:
实例化Viewpager+获得ArrayList作为填充内容+setAdapter(ArrayList....)+新建类extends(FragmentState)PagerAdapter
+重写适配器的Constructor、getItem、getCount+根据情况决定是否监听onPageChangeListener
(1)Views作为填充内容:
privatevoidinitViewPager(){ //TODOAuto-generatedmethodstub pager=(ViewPager)findViewById(R.id.Pager); LayoutParamsparams=newLayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); ImageViewimaV; for(inti=0;i<ids.length;i++){ imaV=newImageView(this); imaV.setImageResource(ids[i]); imaV.setLayoutParams(params); imaV.setScaleType(ScaleType.FIT_XY); views.add(imaV); } pager.setAdapter(newMyAdapter(views)); } publicclassMyAdapterextendsPagerAdapter{ privateList<View>views; publicMyAdapter(List<View>views){ this.views=views; } //destroyItem,getCount,instantiateItem实现循环滑动 @Override publicvoiddestroyItem(Viewarg0,intarg1,Objectarg2){ ((ViewPager)arg0).removeView(views.get(arg1%views.size())); } @Override publicintgetCount(){ returnviews.size(); //向右循环滑动 //returnviews.size()*5; } @Override publicObjectinstantiateItem(Viewarg0,intarg1){ Log.e("tag","instantiateItem="+arg1); ((ViewPager)arg0).addView(views.get(arg1%views.size()),0); returnviews.get(arg1%views.size()); } @Override publicbooleanisViewFromObject(Viewarg0,Objectarg1){ returnarg0==(arg1); } }
(2)fragment作为填充内容:
FragmentActivity或Fragment下
fragment_1extendFragment
privateViewPagerpager; pager=(ViewPager)findViewById(R.id.Pager); fragmentList.add(newfragment_1());//fragment_1导入v4的包 fragmentList.add(newfragment_1()); fragmentList.add(newfragment_1()); Log.i("size",fragmentList.size()+""); MyAdaptermyadapter=newMyAdapter(getSupportFragmentManager(), fragmentList); pager.setAdapter(myadapter); } publicclassMyAdapterextendsFragmentStatePagerAdapter{ List<Fragment>fragmentList; //构造函数 publicMyAdapter(FragmentManagerfm,List<Fragment>fragmentList){ super(fm); //TODOAuto-generatedconstructorstub this.fragmentList=fragmentList; } //重要 @Override publicFragmentgetItem(intarg0){ //TODOAuto-generatedmethodstub Log.i("getItem",arg0+""); return(fragmentList==null||fragmentList.size()==0)?null :fragmentList.get(arg0); } //重要 @Override publicintgetCount(){ //TODOAuto-generatedmethodstub returnfragmentList==null?0:fragmentList.size(); } } }
4、决定是否为ViewPager设置监听:每次切换页面的动作
pager.setOnPageChangeListener(newOnPageChangeListener(){ /** *onPageSelected:每次切换页面就会执行在此实现圆点指示器以及在最后页面显示button */ @Override publicvoidonPageSelected(intarg0){ //TODOAuto-generatedmethodstub } /** *当页面在滑动的时候会调用此方法,在滑动被停止之前,此方法回得到调用。其中三个参数的含义分别为: * *arg0:当前页面,及你点击滑动的页面 * *arg1:当前页面偏移的百分比 * *arg2:当前页面偏移的像素位置 */ @Override publicvoidonPageScrolled(intarg0,floatarg1,intarg2){ //TODOAuto-generatedmethodstub if(arg0==views.size()-1){ Log.i("jump","NextActivity"); startActivity(newIntent().setClass(MainActivity.this, NextActivity.class)); finish(); Log.i("finished","MainActivity"); } } @Override publicvoidonPageScrollStateChanged(intarg0){ //TODOAuto-generatedmethodstub } });
5、为ViewPager添加标题
一般情况下ViewPager在多个页面下都是需要标题来作为指示的
标题有两种形式:
(1)使用view.PagerTabStrip来匹配各个页面:
main.xml部分:
<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>
代码部分:适配器需要添加privateList<String>titleList作为标题字符串集合
classmyPagerAdapterextendsFragmentPagerAdapter{ privateList<Fragment>fragmentList; privateList<String>titleList; publicmyPagerAdapter(FragmentManagerfm,List<Fragment>fragmentList,List<String>titleList){ super(fm); this.fragmentList=fragmentList; //this.fragmentList为这个类下的变量,右边的fragmentList是构造函数的参数 this.titleList=titleList; } .........
publicCharSequencegetPageTitle(intposition){ return(titleList.size()>position)?titleList.get(position):""; }
(2)监听onPageChanggeListener改变Textiew或RadioGroup的状态:
Textiew,Radioroup的触碰效果通过selector实现
按textView、RadioGroup改变页面,通过对其setOnClickListener实现
页面滑动改变对应按钮的改变通过Viewpager的监听
附加:图片指示器的实现只需在Viewpager监听实现
[b]Done![/b]
相关文章推荐
- 自学android笔记之TabLayout结合ViewPager和Fragment实现多页面滑动
- android 学习之Fragment+ViewPager实现页面左右滑动标签页
- android之TabLayout实现PagerSlidingTabStrip,ViewpagerIndicator之类的效果滑动页面导航效果(类似网易新闻)
- Android之ViewPager+Fragment实现页面点击切换和手势滑动
- Android之ViewPager+Fragment实现页面点击切换和手势滑动
- Android 利用ViewPager、Fragment、PagerTabStrip实现多页面滑动效果(牛逼)
- Android开发之ViewPager结合Fragment实现滑动页面的效果(源代码分享)
- Android ViewPager实现滑动切换页面+底部tab点击切换页面(类微信首页)
- Android 利用ViewPager、Fragment、PagerTabStrip实现多页面滑动效果(转载)
- Android ViewPager+Fragment(碎片)实现页面滑动
- Android ViewPager 实现多个页面切换滑动
- Android ViewPager + Fragment实现滑动页面效果
- Android 滑动页面的实现,ViewPager使用详解
- android之ViewPager简单实现局部页面滑动效果
- 在Android中使用ViewPager实现左右滑动页面
- Android 使用ViewPager+Activity(转化为View)实现页面滑动
- Android 利用ViewPager、Fragment、PagerTabStrip实现多页面滑动效
- Android开发之ViewPager滑动页面效果实现(源代码分享)
- Android应用中利用ViewPager实现多页面滑动切换效果示例
- Android UI开发第二十篇——仿launcher的左右滑动(用ViewPager实现欢迎引导页面)