ViewPager实现页面切换

http://blog.csdn.net/nainai007/article/details/7555746

最近一段时间安装新应用时,很多应用第一次启动,都是通过几个页面的切换来展示一些内容,但是第二次启动应用的时候却不出现了,样子如下图所以


我个人感觉这个效果蛮好的,于是找了一下资料,发现实现这个功能也不是挺难,主要是用到ViewPager这个东西,要使用ViewPager,需要引入附加包android-support-v4.jar,读者可以再sdk中找到,好了废话不多说了,贴代码了:

首先是布局文件,要使用一个ViewPager:

  1. <android.support.v4.view.ViewPager  
  2.             android:id="@+id/viewpager"  
  3.             android:layout_width="fill_parent"  
  4.             android:layout_height="fill_parent"  
  5.             />  
上面代码是在界面中现实出ViewPager,但是还需要为ViewPager的每个页卡显示内容,这里我是另外用3个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.     android:background="#158684" >  
  7. </LinearLayout>  


然后是在activity类中使用,代码为:
  1. private void initViewPager() {  
  2.         viewPager = (ViewPager) findViewById(R.id.viewpager);  
  3.         listView = new ArrayList<View>();  
  4.         LayoutInflater inflater = getLayoutInflater();  
  5.         listView.add(inflater.inflate(R.layout.lay1, null));  
  6.         listView.add(inflater.inflate(R.layout.lay2, null));  
  7.         listView.add(inflater.inflate(R.layout.lay3, null));  
  8.         viewPager.setAdapter(new MyPagerAdapter(listView));  
  9.         viewPager.setOnPageChangeListener(new MyPagerChangeListener());  
  10.           
  11.     }  

适配器代码为:

  1. public class MyPagerAdapter extends PagerAdapter {  
  2.           
  3.         private List<View> list;  
  4.           
  5.         public MyPagerAdapter(List<View> list) {  
  6.             this.list = list;  
  7.         }  
  8.           
  9.         @Override  
  10.         public void destroyItem(View view, int index, Object arg2) {  
  11.             // TODO Auto-generated method stub  
  12.             ((ViewPager)view).removeView(list.get(index));  
  13.         }  
  14.   
  15.         @Override  
  16.         public void finishUpdate(View arg0) {  
  17.             // TODO Auto-generated method stub  
  18.               
  19.         }  
  20.   
  21.         @Override  
  22.         public int getCount() {  
  23.             // TODO Auto-generated method stub  
  24.             return list.size();  
  25.         }  
  26.   
  27.         @Override  
  28.         public Object instantiateItem(View view, int index) {  
  29.             ((ViewPager)view).addView(list.get(index), 0);  
  30.             return list.get(index);  
  31.         }  
  32.   
  33.         @Override  
  34.         public boolean isViewFromObject(View view, Object object) {  
  35.             // TODO Auto-generated method stub  
  36.             return view == (object);  
  37.         }  
  38.   
  39.         @Override  
  40.         public void restoreState(Parcelable arg0, ClassLoader arg1) {  
  41.             // TODO Auto-generated method stub  
  42.               
  43.         }  
  44.   
  45.         @Override  
  46.         public Parcelable saveState() {  
  47.             // TODO Auto-generated method stub  
  48.             return null;  
  49.         }  
  50.   
  51.         @Override  
  52.         public void startUpdate(View arg0) {  
  53.             // TODO Auto-generated method stub  
  54.               
  55.         }  
  56.           
  57.     }  

最终的效果图为



源码下载:csdn下载


以上是ViewPager的效果演示,接下来实现应用第一次启动时,进入引导页面,否则直接进入主界面的功能:

我的思路是用SharedPreferences来保存一个值,该值标志这应用是不是第一次启动,如果不是第一次启动,则从引导页面直接跳转到主界面(也可以启动一个service来现在启动那一个activity)

在这里接不贴出代码了,欢迎下载:代码下载



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值