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,如需转载请自行联系原作者

相关文章
|
API Android开发 计算机视觉
视觉智能平台有android人脸识别拍照demo?
视觉智能平台有android人脸识别拍照demo么?
104 0
|
6月前
|
XML Java Android开发
Android Studio App开发之翻页视图ViewPager的讲解及实战(附源码 包括翻页视图和翻页标签栏)
Android Studio App开发之翻页视图ViewPager的讲解及实战(附源码 包括翻页视图和翻页标签栏)
896 0
|
3月前
|
XML API Android开发
码农之重学安卓:利用androidx.preference 快速创建一、二级设置菜单(demo)
本文介绍了如何使用androidx.preference库快速创建具有一级和二级菜单的Android设置界面的步骤和示例代码。
125 1
码农之重学安卓:利用androidx.preference 快速创建一、二级设置菜单(demo)
|
2月前
|
Java Maven 开发工具
第一个安卓项目 | 中国象棋demo学习
本文是作者关于其第一个安卓项目——中国象棋demo的学习记录,展示了demo的运行结果、爬坑记录以及参考资料,包括解决Android Studio和maven相关问题的方法。
第一个安卓项目 | 中国象棋demo学习
|
5月前
|
Android开发 容器
35. 【Android教程】视频页面:ViewPager
35. 【Android教程】视频页面:ViewPager
60 3
|
3月前
|
Android开发
Android使用ViewPager做无限轮播,人为滑动时停止
Android使用ViewPager做无限轮播,人为滑动时停止
80 2
|
6月前
|
Android开发
Android使用ViewPager实现图片轮播系列之三:手动滑动 + 左右箭头(1)
Android使用ViewPager实现图片轮播系列之三:手动滑动 + 左右箭头(1)
|
6月前
|
XML Java Android开发
Android Studio App开发之实现简单的启动引导页ViewPager(附源码 实现App的欢迎页面)
Android Studio App开发之实现简单的启动引导页ViewPager(附源码 实现App的欢迎页面)
776 1
|
Java Android开发
[笔记]Android 学习一之转场动画+ViewPager+ListView简单Demo
[笔记]Android 学习一之转场动画+ViewPager+ListView简单Demo
下一篇
无影云桌面