使用ViewPager实现左右循环滑动

原创 2015年07月10日 16:02:27

    这篇是在实现了使用ViewPager实现高仿launcher拖动效果的基础上做了一些小的修改,可以参照前面的。废话不多说了,直接上代码吧!

          首先看一些layout下的xml

 

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     android:orientation="vertical" >  
  6.   
  7.     <android.support.v4.view.ViewPager  
  8.         android:id="@+id/viewPager"  
  9.         android:layout_width="fill_parent"  
  10.         android:layout_height="wrap_content" />  
  11.   
  12.     <RelativeLayout  
  13.         android:layout_width="fill_parent"  
  14.         android:layout_height="wrap_content"  
  15.         android:orientation="vertical" >  
  16.   
  17.         <LinearLayout  
  18.             android:id="@+id/viewGroup"  
  19.             android:layout_width="fill_parent"  
  20.             android:layout_height="wrap_content"  
  21.             android:layout_alignParentBottom="true"  
  22.             android:layout_marginBottom="30dp"  
  23.             android:gravity="center_horizontal"  
  24.             android:orientation="horizontal" >  
  25.         </LinearLayout>  
  26.     </RelativeLayout>  
  27.   
  28. </FrameLayout>  

和前面一页使用viewpager。使用ViewPager首先需要引入android-support-v4.jar这个jar包。自己不要忘记加。

 

  下面是核心代码:

  

[html] view plaincopy
  1. package cn.com.karl.viewpager;  
  2.   
  3. import java.util.ArrayList;  
  4.   
  5.   
  6. import android.app.Activity;  
  7. import android.content.Intent;  
  8. import android.os.Bundle;  
  9. import android.os.Parcelable;  
  10. import android.support.v4.view.PagerAdapter;  
  11. import android.support.v4.view.ViewPager;  
  12. import android.support.v4.view.ViewPager.OnPageChangeListener;  
  13. import android.util.Log;  
  14. import android.view.LayoutInflater;  
  15. import android.view.View;  
  16. import android.view.ViewGroup;  
  17. import android.view.ViewGroup.LayoutParams;  
  18. import android.view.Window;  
  19. import android.widget.ImageView;  
  20.   
  21. public class MainActivity extends Activity {  
  22.     ViewPager viewPager;  
  23.     ArrayList<View> list;  
  24.     ViewGroup main, group;  
  25.     ImageView imageView;  
  26.     ImageView[] imageViews;  
  27.     private static int c_id = 0;  
  28.     @Override  
  29.     public void onCreate(Bundle savedInstanceState) {  
  30.         super.onCreate(savedInstanceState);  
  31.         this.requestWindowFeature(Window.FEATURE_NO_TITLE);  
  32.         LayoutInflater inflater = getLayoutInflater();  
  33.         list = new ArrayList<View>();  
  34.         list.add(inflater.inflate(R.layout.item1, null));  
  35.         list.add(inflater.inflate(R.layout.item2, null));  
  36.         list.add(inflater.inflate(R.layout.item3, null));  
  37.         list.add(inflater.inflate(R.layout.item4, null));  
  38.         list.add(inflater.inflate(R.layout.item5, null));  
  39.   
  40.         imageViews = new ImageView[list.size()];  
  41.         ViewGroup main = (ViewGroup) inflater.inflate(R.layout.main, null);  
  42.           
  43.         ViewGroup group = (ViewGroup) main.findViewById(R.id.viewGroup);  
  44.   
  45.         viewPager = (ViewPager) main.findViewById(R.id.viewPager);  
  46.   
  47.         for (int i = 0; i < list.size(); i++) {  
  48.             imageView = new ImageView(MainActivity.this);  
  49.             imageView.setLayoutParams(new LayoutParams(12,12));  
  50.             //imageView.setPadding(10, 0, 10, 0);  
  51.             imageViews[i] = imageView;  
  52.             if (i == 0) {  
  53.                   
  54.                 imageViews[i].setBackgroundResource(R.drawable.guide_dot_white);  
  55.             } else {  
  56.                 imageViews[i].setBackgroundResource(R.drawable.guide_dot_black);  
  57.             }  
  58.             group.addView(imageView);  
  59.         }  
  60.   
  61.         setContentView(main);  
  62.   
  63.         viewPager.setAdapter(new MyAdapter());  
  64.         viewPager.setOnPageChangeListener(new MyListener());  
  65.         viewPager.setCurrentItem(300);  
  66.           
  67.     }  
  68.   
  69.     class MyAdapter extends PagerAdapter {  
  70.   
  71.         @Override  
  72.         public int getCount() {  
  73.             return Integer.MAX_VALUE;  
  74.         }  
  75.   
  76.         @Override  
  77.         public boolean isViewFromObject(View arg0, Object arg1) {  
  78.             return arg0 == arg1;  
  79.         }  
  80.   
  81.         @Override  
  82.         public int getItemPosition(Object object) {  
  83.             // TODO Auto-generated method stub  
  84.             return super.getItemPosition(object);  
  85.         }  
  86.   
  87.         @Override  
  88.         public void destroyItem(View arg0, int arg1, Object arg2) {  
  89.             // TODO Auto-generated method stub  
  90.             //((ViewPager) arg0).removeView(list.get(arg1));  
  91.         }  
  92.   
  93.         @Override  
  94.         public Object instantiateItem(View arg0, int arg1) {  
  95.             // TODO Auto-generated method stub  
  96.                 try{  
  97.                     ((ViewPager) arg0).addView(list.get(arg1%list.size()),0);  
  98.                     }catch (Exception e) {  
  99.                         // TODO: handle exception  
  100.                     }  
  101.                 return list.get(arg1%list.size());  
  102.         }  
  103.   
  104.         @Override  
  105.         public void restoreState(Parcelable arg0, ClassLoader arg1) {  
  106.             // TODO Auto-generated method stub  
  107.   
  108.         }  
  109.   
  110.         @Override  
  111.         public Parcelable saveState() {  
  112.             // TODO Auto-generated method stub  
  113.             return null;  
  114.         }  
  115.   
  116.         @Override  
  117.         public void startUpdate(View arg0) {  
  118.             // TODO Auto-generated method stub  
  119.   
  120.         }  
  121.   
  122.         @Override  
  123.         public void finishUpdate(View arg0) {  
  124.             // TODO Auto-generated method stub  
  125.   
  126.         }  
  127.     }  
  128.   
  129.     class MyListener implements OnPageChangeListener {  
  130.   
  131.         //当滑动状态改变时调用    
  132.         @Override  
  133.         public void onPageScrollStateChanged(int arg0) {  
  134.             // TODO Auto-generated method stub  
  135.             //arg0=arg0%list.size();  
  136.               
  137.         }  
  138.   
  139.         //当当前页面被滑动时调用    
  140.         @Override  
  141.         public void onPageScrolled(int arg0, float arg1, int arg2) {  
  142.             // TODO Auto-generated method stub  
  143.               
  144.         }  
  145.   
  146.         //当新的页面被选中时调用    
  147.         @Override  
  148.         public void onPageSelected(int arg0) {  
  149.              if(arg0>2){  
  150.                     arg0=arg0%list.size();  
  151.                    }  
  152.             c_id = arg0;  
  153.             for (int i = 0; i < imageViews.length; i++) {  
  154.                 imageViews[arg0]  
  155.                         .setBackgroundResource(R.drawable.guide_dot_white);  
  156.                 if (arg0 != i) {  
  157.                     imageViews[i]  
  158.                             .setBackgroundResource(R.drawable.guide_dot_black);  
  159.                 }  
  160.             }  
  161.               
  162.             Log.e("-------------", "当前是第"+c_id+"页");  
  163.         }  
  164.   
  165.     }  
  166. }  
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android开发,使用ViewPager实现完全真正的左右循环滑动

相信读者看到这个博客时,对它的内容一定不会陌生。这是一个Android开发中非常常见的需求,并且网上也有很多实现方法。然而,就笔者目前在网上看到的实现方法,大概可分为两种。一种是将PagerAdapt...

Android使用ViewPager实现左右循环滑动及轮播效果

ViewPager是一个常用的android组件,不过通常我们使用ViewPager的时候不能实现左右无限循环滑动,在滑到边界的时候会看到一个不能翻页的动画,可能影响用户体验。此外,某些区域性的Vie...

使用ViewPager实现左右循环滑动图片

•android-support-v4.jar,这是谷歌官方 给我们提供的一个兼容低版本Android设备的软件包,里面包囊了只有在Android3.0以上可以使用的api。而ViewPager就是其...

Android 使用ViewPager实现左右循环滑动图片

Android 使用ViewPager实现左右循环滑动图片 分类: Android UI设计2013-05-23 18:29 6890人阅读 评论(25) 收藏 举报 ViewPage...

使用ViewPager实现左右循环滑动

前面一篇文章实现了使用ViewPager实现高仿launcher拖动效果 ,后来很多朋友问能不能实现左右循环滑动效果和引导页面。今天实现了左右滑动,至于在最后一页滑动跳转,这个也做了但是效果不是太好,...

Android 使用ViewPager实现左右循环滑动图片和显示当前页码

ViewPager这个小demo实现的是可以左右循环滑动图片,下面带索引,滑到最后一页在往右滑动就要第一页,第一页往左滑动就到最后一页,先上效果图,用美女图片是我一贯的作风,呵呵 1...

Android 使用ViewPager实现左右循环滑动图片

ViewPager这个小demo实现的是可以左右循环滑动图片,下面带索引,滑到最后一页在往右滑动就要第一页,第一页往左滑动就到最后一页,先上效果图,用美女图片是我一贯的作风,呵呵 1.   ...

Android 使用ViewPager实现左右循环滑动图片

ViewPager这个小demo实现的是可以左右循环滑动图片,下面带索引,滑到最后一页在往右滑动就要第一页,第一页往左滑动就到最后一页,先上效果图,用美女图片是我一贯的作风,呵呵 1...

ViewPager实现左右循环滑动

  • 2013年07月25日 17:18
  • 5.08MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用ViewPager实现左右循环滑动
举报原因:
原因补充:

(最多只允许输入30个字)