ViewPager来制作欢迎和缓冲界面

一、前台显示界面制作

我们每次安装一个软件的时候,就会看到会有2个或是3个的UI界面用来左右滑动,实现一个软件欢迎的界面,下面我们就来看他的具体实现:

首先我们新建一个项目,在Resource/Layout下的Main文件里加入ViewPager的控件,代码如下:

<android.support.v4.view.ViewPager

                           android:id="@+id/viewPager"

          android:layout_width="match_parent"

               android:layout_height="match_parent" />

这是一个公共的界面,是用来存放欢迎的三个UI界面的。

 

 

下面我们在Layout文件夹下在建3个axml的文件,由于代码基本相同,只是插入的图片不一样,我们就用一张欢迎界面来做例子:

下面是其中一个欢迎UI界面的代码:

<View xmlns:android="http://schemas.android.com/apk/res/android"    

android:layout_width="match_parent"    

android:layout_height="match_parent"    

android:background="@drawable/tupian" />

二、活动实现代码

1、首先我们需要引用库,这样我们就可以用“ViewPagerAdapter”。

2、我们开始主程序里面的代码:

(1)写适配器并为ViewPager设置,适配器继承PagerAdapter

(2)实例化ViewPager

(3)准备页面内容List<View>PageViews

首先我们先写一个适配器,用来承载我们欢迎界面。代码如下:

class ViewPagerAdapter : PagerAdapter
        {
            public ViewPagerAdapter()
            {
                PageViews new List<View>();
            }
            //界面列表
            public IList<View> PageViews { getset; }
            //获取当前界面数
            public override int Count
            {
                get { return PageViews.Count; }
            }
            //初始化position位置的界面
            public override Java.Lang.Object InstantiateItem(ViewGroup container, int position)           
 { 
               container.AddView(PageViews[position]);
                return PageViews[position];
            }
           //销毁position位置的界面
            public override void DestroyItem(ViewGroup container, int position, Java.Lang.Object @object)
            {
                container.RemoveView(PageViews[position]);
            }
            //判断是否对象生成界面
            public override bool IsViewFromObject(View view, Java.Lang.Object arg1)
            {
                return view == arg1;
            }
        }

3、MainActivity.cs中的代码:

现在我们开始来分情况来实现一个真正的欢迎界面:

(1)当我们第一次登录的时候,我们依次的加载这三个欢迎界面:

 public void firstused()
        {
            View thirdWec = LayoutInflater.Inflate(Resource.Layout.Welcome3,null);    
        pagerAdapter.PageViews.Add(LayoutInflater.Inflate(Resource.Layout.Welcome,null));  
          pagerAdapter.PageViews.Add(LayoutInflater.Inflate(Resource.Layout.Welcome2,null));
            pagerAdapter.PageViews.Add(thirdWec); 
           viewPager.Adapter = pagerAdapter;
        }

 

(2)当第二次或者之后登录显示的等待页面:

public void secondused()
        {
            pagerAdapter.PageViews.Add(LayoutInflater.Inflate(Resource.Layout.wait, null));
            viewPager.Adapter = pagerAdapter;
        }

接下来看全部的代码:

 

//定义ViewPager对象
        public ViewPager viewPager; 
       //定义ViewPager适配器 
       private ViewPagerAdapter pagerAdapter;
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView(Resource.Layout.Main);
            //初始化pageAdapter
            pagerAdapter = new ViewPagerAdapter();
            viewPager = FindViewById<ViewPager>(Resource.Id.viewPager);
             ISharedPreferences shared = this.GetSharedPreferences("globalSetting",0);
            if (shared.Contains("used"))
            {
                secondused();
            }
            else
            {
                shared.Edit().PutBoolean("used", true).Commit();
                firstused();
            }
            startMainService();
        }
        //首次
        public void firstused()
        {
            View thirdWec = LayoutInflater.Inflate(Resource.Layout.Welcome3,null);
            pagerAdapter.PageViews.Add(LayoutInflater.Inflate(Resource.Layout.Welcome,null));
            pagerAdapter.PageViews.Add(LayoutInflater.Inflate(Resource.Layout.Welcome2,null));
            pagerAdapter.PageViews.Add(thirdWec);
            Button btnBegin = thirdWec.FindViewById<Button>(Resource.Id.btnbegin);
            btnBegin.Click += (e, s) =>
                {
                }; 
           viewPager.Adapter = pagerAdapter;
        }
        //非首次使用的欢迎界面
        public void secondused()
        {
            pagerAdapter.PageViews.Add(LayoutInflater.Inflate(Resource.Layout.wait, null));
            viewPager.Adapter = pagerAdapter;
            new Handler().PostDelayed(() => 
               {
                }, 1500);
        }

就这样一个完整的欢迎界面就做好了。

posted @ 2015-04-07 15:05  XFP  阅读(176)  评论(0编辑  收藏  举报