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 { get; set; } //获取当前界面数 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); }
就这样一个完整的欢迎界面就做好了。