隐藏

Xamarin.Android 引导页 启动页

发布:2021/10/14 8:43:49作者:管理员 来源:本站 浏览次数:811

第一次安装的APP,一般都会浏览几张引导图片,才进入APP

1.界面布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
 
  <android.support.v4.view.ViewPager
      android:id="@+id/viewpage"
      android:layout_width="match_parent"
      android:layout_height="match_parent"></android.support.v4.view.ViewPager>
 
  <LinearLayout
      android:id="@+id/point"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:orientation="horizontal"
      android:layout_alignParentBottom="true"
      android:layout_centerHorizontal="true"
      android:layout_marginBottom="24.0dp"
      android:gravity="center_horizontal"></LinearLayout>
  <TextView
      android:id="@+id/guideText"
      android:layout_width="90dp"
      android:layout_height="28dp"
      android:text="立即体验"
      android:textColor="@color/White"
      android:background="@drawable/guide_button"
      android:layout_centerHorizontal="true"
      android:gravity="center"
      android:layout_marginBottom="20dp"
      android:layout_above="@id/point"
      android:visibility="gone"
        />
</RelativeLayout>

>>> 其中的 LinearLayout 是为了显示图片切换到第几张显示的白点
2.后台

 2.1  填充 ViewPager 控件的数据源

list = new List<View>();
            // 设置图片布局参数
            LinearLayout.LayoutParams ps = new LinearLayout.LayoutParams(ActionBar.LayoutParams.MatchParent, ActionBar.LayoutParams.MatchParent);
            // 创建引导图
            for (int i = 0; i < imageView.Length; i++)
            {
                ImageView iv = new ImageView(this);
                iv.LayoutParameters = ps;
                iv.SetScaleType(ImageView.ScaleType.FitXy);
                iv.SetImageResource(imageView[i]);
                list.Add(iv);
            }
 
            // 加入适配器
            viewpage.Adapter = new GuideAdapter(list);

>>> 其中GuideAdapter 是继承了Android.Support.V4.View.PagerAdapter的自定义累

2.2 根据引导图数量,创建对应数量的小圆点

// 添加小圆点
            for (int i = 0; i < imageView.Length; i++)
            {
                // 圆点大小适配
                var size = Resources.GetDimensionPixelSize(Resource.Dimension.Size_18);
                LinearLayout.LayoutParams pointParams = new LinearLayout.LayoutParams(size, size);
 
                if (i < 1)
                {
                    pointParams.SetMargins(0, 0, 0, 0);
                }
                else
                {
                    pointParams.SetMargins(10, 0, 0, 0);
                }
 
                ImageView imageView = new ImageView(this);
                imageView.LayoutParameters = pointParams;
 
                imageView.SetBackgroundResource(Resource.Drawable.NoPress);
                linearLayout_Point.AddView(imageView);
            }
 
            // 设置默认选中第一张圆点
            linearLayout_Point.GetChildAt(0).SetBackgroundResource(Resource.Drawable.Press);

3. ViewPager 的 ViewPager.IOnPageChangeListener 事件处理
public void OnPageScrolled(int position, float positionOffset, int positionOffsetPixels)
        {
        }
 
        public void OnPageScrollStateChanged(int state)
        {
        }
        /// <summary>
        /// 滑动到第几张图片
        /// </summary>
        /// <param name="position"></param>
        public void OnPageSelected(int position)
        {
            for (int i = 0; i < imageView.Length; i++)
            {
                if (i == position)
                {
                    linearLayout_Point.GetChildAt(position).SetBackgroundResource(Resource.Drawable.Press);
                }
                else
                {
                    linearLayout_Point.GetChildAt(i).SetBackgroundResource(Resource.Drawable.NoPress);
                }
            }
 
            // 滑动到最后一张图,显示按钮
            if (position == imageView.Length - 1)
            {
                tv.Visibility = ViewStates.Visible;
            }
            else
            {
                tv.Visibility = ViewStates.Gone;
            }
        }
4.项目地址: https://github.com/harrylsp/Guide