• (转载)PagerView实现翻页效果


    现在很多应用都在第一次启动时提供一个简要的介绍,以左右滑动的效果来介绍应用的使用和基本情况。下面将实现一个简单的Demo

    首先到SDK的extra目录下找到android-support-v4.jar

    首先看一下工程结构:

    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/guidePages"  
    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="15dp"  
    23.             android:gravity="center_horizontal"  
    24.             android:orientation="horizontal" >  
    25.         </LinearLayout>  
    26.     </RelativeLayout>  
    27.   
    28. </FrameLayout>  


    然后新建page1.xml文件

    1. <?xml version="1.0" encoding="utf-8"?>    
    2. <LinearLayout 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.     <ImageView      
    8.         android:layout_width="fill_parent"      
    9.         android:layout_height="fill_parent"      
    10.         android:background="@drawable/a" >      
    11.     </ImageView>    
    12.         
    13. </LinearLayout>    


    page2.xml、page3.xml一样,只要改变图片路径就行

    然后编辑Activity

    1. public class ViewPagerActivity extends Activity {  
    2.       
    3.     private ViewPager viewPager;      
    4.     private ArrayList<View> pageViews;      
    5.     private ViewGroup main;  
    6.     private ViewGroup group;  
    7.     private ImageView imageView;      
    8.     private ImageView[] imageViews;     
    9.       
    10.     @Override  
    11.     public void onCreate(Bundle savedInstanceState) {  
    12.         super.onCreate(savedInstanceState);  
    13.         this.requestWindowFeature(Window.FEATURE_NO_TITLE);  
    14.           
    15.         setContentView(R.layout.main);  
    16.           
    17.         LayoutInflater inflater = getLayoutInflater();  
    18.         pageViews = new ArrayList<View>();  
    19.         pageViews.add(inflater.inflate(R.layout.page1, null));  
    20.         pageViews.add(inflater.inflate(R.layout.page2, null));  
    21.         pageViews.add(inflater.inflate(R.layout.page3, null));  
    22.           
    23.         imageViews = new ImageView[pageViews.size()];  
    24.           
    25.         main = (ViewGroup)inflater.inflate(R.layout.main, null);  
    26.           
    27.         //group是底部导航小圆点的布局  
    28.         group = (ViewGroup)main.findViewById(R.id.viewGroup);  
    29.           
    30.         viewPager = (ViewPager)main.findViewById(R.id.guidePages);      
    31.           
    32.         for (int i = 0; i < pageViews.size(); i++) {      
    33.             imageView = new ImageView(ViewPagerActivity.this);      
    34.             imageView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));      
    35.             imageViews[i] = imageView;      
    36.             if (i == 0) {      
    37.                 //默认选中第一张图片    
    38.                 imageViews[i].setBackgroundResource(R.drawable.indicator_f);      
    39.             } else {      
    40.                 imageViews[i].setBackgroundResource(R.drawable.indicator);      
    41.             }      
    42.             group.addView(imageViews[i]);      
    43.         }      
    44.       
    45.         setContentView(main);      
    46.       
    47.         viewPager.setAdapter(new ViewPagerAdapter());      
    48.         viewPager.setOnPageChangeListener(new ViewPagerChangeListener());  
    49.           
    50.     }  
    51.       
    52.     class ViewPagerAdapter extends PagerAdapter{  
    53.   
    54.         @Override  
    55.         public int getCount() {  
    56.             return pageViews.size();  
    57.         }  
    58.   
    59.         @Override      
    60.         public boolean isViewFromObject(View arg0, Object arg1) {      
    61.             return arg0 == arg1;      
    62.         }      
    63.       
    64.         @Override      
    65.         public void destroyItem(View arg0, int arg1, Object arg2) {      
    66.             ((ViewPager) arg0).removeView(pageViews.get(arg1));      
    67.         }      
    68.       
    69.         @Override      
    70.         public Object instantiateItem(View arg0, int arg1) {      
    71.             ((ViewPager) arg0).addView(pageViews.get(arg1));      
    72.             return pageViews.get(arg1);      
    73.         }      
    74.       
    75.     }  
    76.       
    77.     class ViewPagerChangeListener implements OnPageChangeListener  
    78.     {  
    79.   
    80.         @Override  
    81.         public void onPageScrollStateChanged(int arg0) {  
    82.             // TODO Auto-generated method stub  
    83.               
    84.         }  
    85.   
    86.         @Override  
    87.         public void onPageScrolled(int arg0, float arg1, int arg2) {  
    88.             // TODO Auto-generated method stub  
    89.               
    90.         }  
    91.   
    92.         @Override  
    93.         public void onPageSelected(int position) {  
    94.             for (int i = 0; i < imageViews.length; i++) {      
    95.                 imageViews[position].setBackgroundResource(R.drawable.indicator_f);      
    96.                 if (position != i) {      
    97.                     imageViews[i].setBackgroundResource(R.drawable.indicator);      
    98.                 }      
    99.             }    
    100.         }  
    101.     }  
    102. }  


    运行,效果图如下,不是很美观,实际使用替换图片就行,需要源码的童鞋可以联系我。我的新浪微博 唐韧_Ryan

  • 相关阅读:
    [ACM] POJ 3258 River Hopscotch (二分,最大化最小值)
    c语言全局变量和局部变量问题汇总
    surfaceDestroyed什么时候被调用
    JDBC连接MySQL数据库及演示样例
    30天自制操作系统之第11天 制作窗体
    bugFree与zentao
    java实现第七届蓝桥杯生日蜡烛
    java实现第七届蓝桥杯生日蜡烛
    java实现第七届蓝桥杯生日蜡烛
    java实现第七届蓝桥杯生日蜡烛
  • 原文地址:https://www.cnblogs.com/greywolf/p/2832027.html
Copyright © 2020-2023  润新知