Android之ViewPager循环Demo

简介:

ViewPager是谷歌官方提供的兼容低版本安卓设备的软件包,里面包含了只有在安卓3.0以上可以使用的api。Viewpager现在也算是标配了,如果一个App没有用到ViewPager感觉还是比较罕见的,导航和页面菜单常用的功能,ViewPager与LisstView类似,ListView经常会用到BaseAdapter,ViewPager则继承的是PagerAdapter,关于简单的使用可以去官网可以http://developer.android.com/reference/android/support/v4/view/ViewPager.html当做参考了解一下,开始正题吧:

基础布局

看下效果图吧,网上好多都是放美女的,我还是简单点就放个TextView吧:

activity_main.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<RelativeLayout xmlns: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"
     android:paddingBottom= "@dimen/activity_vertical_margin"
     android:paddingLeft= "@dimen/activity_horizontal_margin"
     android:paddingRight= "@dimen/activity_horizontal_margin"
     android:paddingTop= "@dimen/activity_vertical_margin"
     tools:context= "com.example.googleviewpager.MainActivity"  >
 
  <android.support.v4.view.ViewPager  
         android:id= "@+id/viewpager"
         android:layout_width= "wrap_content"
         android:layout_height= "wrap_content"
         android:layout_gravity= "center"  />
 
</RelativeLayout>

 需要切换的三个布局文件,one.xml,two.xml,three.xml,one.xml的代码,其他两个类似就不贴代码了:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version= "1.0"  encoding= "utf-8" ?>
<LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android"
     android:layout_width= "match_parent"
     android:layout_height= "match_parent"
     android:orientation= "vertical"
     >
     
     <TextView
         android:text= "周永康被开"
         android:layout_width= "wrap_content"
         android:layout_height= "wrap_content" />
 
</LinearLayout>

Demo实现

onCreate中的代码,其实分别加载了三个View,其中第一个和最后一个加载了一个空的View,主要是为了能够左右循环:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
setContentView(R.layout.activity_main);
         LayoutInflater inflater=getLayoutInflater();
         viewPager=(ViewPager) findViewById(R.id.viewpager);
         view1=inflater.inflate(R.layout.one, null );
         view1.setBackgroundColor(Color.RED);
         view2=inflater.inflate(R.layout.two, null );
         view2.setBackgroundColor(Color.BLACK);
         view3=inflater.inflate(R.layout.three, null );
         view3.setBackgroundColor(Color.BLUE);
         viewList= new  ArrayList<View>();
         viewList.add( new  View( this ));
         viewList.add(view1);
         viewList.add(view2);
         viewList.add(view3);
         viewList.add( new  View( this ));
         viewPager.setAdapter( new  MyViewPagerAdapter(viewList));
         viewPager.setCurrentItem( 1 );

 自定义的MyViewPagerAdapter:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
private  class  MyViewPagerAdapter  extends  PagerAdapter
     {
         @Override
         public  void  destroyItem(ViewGroup container,  int  position, Object object) {
             // TODO Auto-generated method stub
             container.removeView(myList.get(position));
         }
         @Override
         public  Object instantiateItem(ViewGroup container,  int  position) {
             // TODO Auto-generated method stub
             container.addView(myList.get(position),  0 );
               return  myList.get(position);
         }
 
         private  List<View> myList;
 
         public    MyViewPagerAdapter(List<View> list) {
             myList=list;
         }
 
         @Override
         public  int  getCount() {
             // TODO Auto-generated method stub
             return  myList.size();
         }
 
         @Override
         public  boolean  isViewFromObject(View arg0, Object arg1) {
             // TODO Auto-generated method stub
               return  arg0==(arg1);
         }
 
         
         
     }

  上面写完之后还是需要设置一下页面setOnPageChangeListener的事件,循环的重点就是切换到一个空的View时将页面替换掉就可以:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
viewPager.setOnPageChangeListener( new  OnPageChangeListener() {
             
             @Override
             public  void  onPageSelected( int  arg0) {
                 // TODO Auto-generated method stub
                  System.out.println( "onPageSelected = "  + arg0);
                  if (arg0 ==  0 )
                    viewPager.setCurrentItem(viewList.size()- 2 );
                  else  if (arg0 == viewList.size() -  1 )
                    viewPager.setCurrentItem( 1 );
             }
             
             @Override
             public  void  onPageScrolled( int  arg0,  float  arg1,  int  arg2) {
                 // TODO Auto-generated method stub
                 
             }
             
             @Override
             public  void  onPageScrollStateChanged( int  arg0) {
                 // TODO Auto-generated method stub
                 
             }
         });

  最后看一张切换中的效果吧:

Demo比较简单,不过对于入门应该是足够了~

本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4149395.html,如需转载请自行联系原作者

相关文章
|
6月前
|
API Android开发 计算机视觉
视觉智能平台有android人脸识别拍照demo?
视觉智能平台有android人脸识别拍照demo么?
67 0
|
4月前
|
XML Java Android开发
Android Studio App开发之翻页视图ViewPager的讲解及实战(附源码 包括翻页视图和翻页标签栏)
Android Studio App开发之翻页视图ViewPager的讲解及实战(附源码 包括翻页视图和翻页标签栏)
111 0
|
8月前
|
Android开发
Android 使用ViewPager实现手动左右切换页面和底部点点跟随切换效果
Android 使用ViewPager实现手动左右切换页面和底部点点跟随切换效果
136 0
|
6月前
|
Java Android开发 开发者
1024程序节|Android框架之一 BRVAH【BaseRecyclerViewAdapterHelper】使用demo
BRVAH是一个强大的RecyclerAdapter框架(什么是RecyclerView?),它能节约开发者大量的开发时间,集成了大部分列表常用需求解决方案。为什么会有它?请查看「Android开源框架BRVAH由来篇」该框架于2016年4月10号发布的第1个版本到现在已经一年多了,经历了800多次代码提交,140多次版本打包,修复了1000多个问题,获得了9000多star,非常感谢大家的使用以及反馈。
147 0
|
8月前
|
Android开发
Android 使用ViewPager和自定义PagerAdapter实现轮播图效果
Android 使用ViewPager和自定义PagerAdapter实现轮播图效果
70 0
|
4月前
|
XML Java Android开发
Android Studio App开发之实现简单的启动引导页ViewPager(附源码 实现App的欢迎页面)
Android Studio App开发之实现简单的启动引导页ViewPager(附源码 实现App的欢迎页面)
86 1
|
6月前
|
Java Android开发
[笔记]Android 学习一之转场动画+ViewPager+ListView简单Demo
[笔记]Android 学习一之转场动画+ViewPager+ListView简单Demo
|
7月前
|
数据处理 Android开发
关于安卓viewpager实现堆叠卡片交互
关于安卓viewpager实现堆叠卡片交互
184 1
|
8月前
|
Android开发
Android 中ViewPager嵌套RecyclerView出现滑动冲突的解决方案
Android 中ViewPager嵌套RecyclerView出现滑动冲突的解决方案
706 0
|
Android开发
Animation插值器:解决Android Animation 循环执行的停顿问题
在Android开发中,有时候我们需要一个动画一直循环执行下去,常见的如laoding菊花一直旋转,这时候就需要使用Animation的repeat功能
678 0