標籤:
實現原理:使用ViewPager控制項(com.android.support:support-v4:22.1.1),把引導頁的layout檔案放進ViewPager控制項就可以了。
ViewPager控制項本質上也是個清單控制項,橫向滾動,一個頁面一個頁面的滾動,底下並沒有捲軸,所以非常適合做引導頁,和頁簽的tap控制項來做橫向滾動的頁面也非常常用。
首先引用 com.android.support:support-v4:22.1.1
引導頁面的layout
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" 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" tools:context="demo.viewpagerdemo.GuideActivity"> <android.support.v4.view.ViewPager android:id="@+id/guide_activity_viewpager" android:layout_width="fill_parent" android:layout_height="fill_parent" > </android.support.v4.view.ViewPager></RelativeLayout>
package demo.viewpagerdemo;import android.app.Activity;import android.support.v4.view.ViewPager;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import java.util.ArrayList;import java.util.List;public class GuideActivity extends Activity { private View mPage1, mPage2, mPage3; private List<View> mViews = new ArrayList<View>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_guide); ViewPager vp=(ViewPager)findViewById(R.id.guide_activity_viewpager); mPage1 = LayoutInflater.from(this).inflate( R.layout.guide_page1, null); mPage2 = LayoutInflater.from(this).inflate( R.layout.guide_page2, null); mPage3 = LayoutInflater.from(this).inflate( R.layout.guide_page3, null); mViews.add(mPage1); mViews.add(mPage2); mViews.add(mPage3); vp.setAdapter(new BasePagerAdapter(this, mViews)); }}
注意ViewPager需要使用PagerAdapter適配器,所以需要繼承PagerAdapter類來實現一個適配器
public class BasePagerAdapter extends PagerAdapter { private Context mContext; private List<? extends View> mViews; public BasePagerAdapter(Context mContext, List<? extends View> mViews) { this.mContext = mContext; this.mViews = mViews; } @Override public int getCount() { return mViews.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(mViews.get(position)); return mViews.get(position); } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(mViews.get(position)); }}
Android引導頁的實現