第一次安装app的时候总会跳出一些如何使用这个app的引导页,介绍这个app,本文主要讲解这个功能是如何实现的
场景:第一次启动app有引导页,以后启动直接进入主页面
使用Google提供的ViewPager
1.布局 一个ViewPager控件和底下的三个小黑点(随着页面的改动小黑点也会动)
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:showIn="@layout/activity_main" tools:context="com.example.myapplication.MainActivity"> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v4.view.ViewPager> <LinearLayout android:id="@+id/dotsLayout" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:layout_alignParentBottom="true"> <ImageView android:src="@drawable/dot_sselect" android:id="@+id/dot1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ImageView android:src="@drawable/dot_unselect" android:id="@+id/dot2" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ImageView android:src="@drawable/dot_unselect" android:id="@+id/dot3" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </RelativeLayout>2.设置设配器
package com.example.myapplication; import android.content.Context; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.view.View; import android.view.ViewGroup; import java.util.List; /** * Created by 小新 on 2016/3/13. */ public class MyViewPagerAdapter extends PagerAdapter { private List<View> views; public MyViewPagerAdapter( List<View> views){ this.views = views; } @Override public Object instantiateItem(ViewGroup container, int position) { ((ViewPager)container).addView(views.get(position)); return views.get(position); } @Override public void destroyItem(ViewGroup container, int position, Object object) { ((ViewPager)container).removeView(views.get(position)); } @Override public int getCount() { return views.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } }3.在avtivity中
package com.example.myapplication; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; import android.view.View; import android.view.Menu; import android.view.MenuItem; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener{ private ViewPager viewPager; private MyViewPagerAdapter myViewPagerAdapter; private List<View> views; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); viewPager = (ViewPager) findViewById(R.id.viewpager); views = new ArrayList<View>(); //获取布局加载器 LayoutInflater layoutInflater = LayoutInflater.from(this); //加载布局并且将布局添加到视图中去 views.add( layoutInflater.inflate(R.layout.one,null)); views.add(layoutInflater.inflate(R.layout.two,null)); views.add(layoutInflater.inflate(R.layout.three,null)); //创建设配器 myViewPagerAdapter = new MyViewPagerAdapter(views); //绑定设配器 viewPager.setAdapter(myViewPagerAdapter); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); } //下面这三个方法是实现页面活动的监听器 @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { } }