需要添加三个后台文件

SplashActivity(判断是否是第一次登陆)WelcomeActivity(引导页)ViewPagerAdapter(ViewPager控件适配器)

ViewPager是一种通过添加视图来实现左右滑动的控件,非常适合用来做引导页。
在应用第一次开启时,首先进入SplashActivity页面,通过SharePreferences存储判断登陆的布尔类型值判断用户是否是第一次打开应用,若是,跳转至引导页,否则直接跳到登陆页面。
在引导页面,使用ViewPager的addView(View v)方法添加多个视图,并且添加OnPageChangeListener监听器来监听用户的手势滑动,通过指定方法获取视图索引,从而实现视图切换。
话不多说,直接上代码:
SplashActivity

public class SplashActivity extends Activity {private Context context;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);context=SplashActivity.this;boolean isFirstOpen=SharePerferenceUtil.IsFirstLogin(context);if(!isFirstOpen){//不是第一次登陆Intent intent=new Intent(context,LoginActivity.class);startActivity(intent);finish();return;}setContentView(R.layout.activity_splash);new Handler().postDelayed(new Runnable() {//第一次登陆时1秒后跳到引导页@Overridepublic void run() {Intent intent=new Intent(context,WelcomeActivity.class);startActivity(intent);finish();overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);}}, 1000);}}

ViewPagerAdapter

public class ViewPagerAdapter extends PagerAdapter {private List views;public ViewPagerAdapter(List views2){this.views=views2;}//获得视图总数@Overridepublic int getCount() {if(views!=null){return views.size();}return 0;}//判断是否由对象生成视图@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return (arg0==arg1);}//初始化position位置的视图@Overridepublic Object instantiateItem(View container, int position) {((ViewPager)container).addView(views.get(position), 0);return views.get(position);}//销毁position位置的视图@Overridepublic void destroyItem(View container, int position, Object object) {((ViewPager)container).removeView(views.get(position));}}

WelcomeActivity

public class WelcomeActivity extends Activity implements OnClickListener,OnPageChangeListener{private ViewPager viewPager;private LinearLayout pointLayout;private ViewPagerAdapter adapter;private List views;private Button startBtn;private int[] guidePics = { R.layout.view_guide1, R.layout.view_guide2,R.layout.view_guide3 };//引导页中的三张图片布局private ImageView[] dots;//代表视图索引的圆圈private int currentIndex;//表示前一个视图的索引private Context context;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_welcome);context = WelcomeActivity.this;if (Build.VERSION.SDK_INT >= 19) {// android 4.4 以上 沉浸式状态栏Window window = getWindow();window.addFlags(67108864);}AndroidBug5497Workaround.assistActivity(WelcomeActivity.this);//解决沉浸式bugviewPager = (ViewPager) findViewById(R.id.viewPager);pointLayout=(LinearLayout) findViewById(R.id.pointLayout);views = new ArrayList();initGuidePage();setViewPagerAdapter();initDots();}@Overrideprotected void onPause() {super.onPause();// 如果切换到后台,就设置下次不进入功能引导页// SharePerferenceUtil.setFirstLogin(context, false);}//初始化引导页视图private void initGuidePage() {for (int i = 0; i < guidePics.length; i++) {View view=LayoutInflater.from(context).inflate(guidePics[i], null);if(i==guidePics.length-1){startBtn=(Button) view.findViewById(R.id.btnStart);startBtn.setTag("start");startBtn.setOnClickListener(this);}views.add(view);}}//设置ViewPager适配器private void setViewPagerAdapter() {adapter=new ViewPagerAdapter(views);viewPager.setAdapter(adapter);viewPager.setOnPageChangeListener(this);}//初始化圆圈private void initDots() {dots=new ImageView[guidePics.length];for (int i = 0; i < guidePics.length; i++) {dots[i]=(ImageView) pointLayout.getChildAt(i);dots[i].setEnabled(true);dots[i].setOnClickListener(this);dots[i].setTag(i);}currentIndex=0;dots[currentIndex].setEnabled(false);}@Overridepublic void onClick(View v) {if(v.getTag().equals("start")){enterToLoginActivity();//点击“立即开启” 进入登陆页面return;}//圆圈点击后执行int position=(Integer) v.getTag();setCurrentView(position);setCurrentDot(position);}//设置当前视图private void setCurrentView(int position) {if(position<0||position>guidePics.length-1){return;}viewPager.setCurrentItem(position);}//设置当前圆圈状态private void setCurrentDot(int position) {if(position<0||position>guidePics.length-1||currentIndex==position){return;}dots[position].setEnabled(false);dots[currentIndex].setEnabled(true);currentIndex=position;}//通过SplashActivity中转进入LoginActivityprivate void enterToLoginActivity() {Intent intent=new Intent(context,SplashActivity.class);startActivity(intent);SharePerferenceUtil.setFirstLogin(context, false);//设置不是第一次登陆finish();overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);}@Overridepublic void onPageScrollStateChanged(int arg0) {// arg0 ==1的时辰默示正在滑动,arg0==2的时辰默示滑动完毕了,arg0==0的时辰默示什么都没做。}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {// arg0 :当前页面,及你点击滑动的页面        // arg1:当前页面偏移的百分比        // arg2:当前页面偏移的像素位置}@Overridepublic void onPageSelected(int position) {setCurrentDot(position);//设置圆圈状态}}

引导页布局文件

< 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.support.v4.view.ViewPager        android:id="@+id/viewPager"        android:layout_width="match_parent"        android:layout_height="match_parent"/ >    < LinearLayout         android:id="@+id/pointLayout"android:layout_width="wrap_content"android:layout_height="wrap_content"        android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"        android:layout_marginBottom="40dp"        android:orientation="horizontal">    底部的三个小圆圈        < ImageView             android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center_vertical"            android:clickable="true"            android:padding="15dp"            android:src="@drawable/point_bg"/ >        < ImageView             android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center_vertical"            android:clickable="true"            android:padding="15dp"            android:src="@drawable/point_bg"/ >        < ImageView             android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center_vertical"            android:clickable="true"            android:padding="15dp"            android:src="@drawable/point_bg"/ >    < /LinearLayout>< /RelativeLayout>

引导页视图(三个),这里仅贴出最后一个视图布局

< RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"   android:layout_width="match_parent"    android:layout_height="match_parent" >    < ImageView         android:layout_width="match_parent"        android:layout_height="match_parent"        android:src="@drawable/guide_3"        android:scaleType="fitXY"  / >    < Button         android:id="@+id/btnStart"        android:layout_width="200dp"        android:layout_height="50dp"        android:text="立即开启"        android:textColor="@color/orange_express"        android:layout_centerHorizontal="true"        android:layout_alignParentBottom="true"        android:layout_marginBottom="150dp"        android:background="@drawable/startbtn_bg"/>< /RelativeLayout>

更多相关文章

  1. FAQ_11_解决ADT的Logcat罢工问题
  2. android TextView EditTextView一些技巧使用 (视图代码布局)
  3. android 常用控件
  4. Android(安卓)中文 API(123) ―― AbsListView(二)
  5. Android复写BaseAdapter并显示ListView视图
  6. Android实现图片轮播切换实例代码
  7. Android(安卓)Studio TV开发教程(十)添加引导步骤
  8. Android(安卓)软键盘弹出时,EditText固定在键盘上方
  9. Android(安卓)- MVC、MVP与MVVM架构

随机推荐

  1. 【Android】文件读写操作(含SDCard的读写)
  2. Android——Activity四种启动模式
  3. Android(安卓)Settings
  4. Android(安卓)View的介绍和使用
  5. Hello Android(安卓)- android窗体透明的
  6. android api 中文 (74)—— AdapterView.Ad
  7. Android(安卓)EditText 设置行距不影响光
  8. MTK Android(安卓)Driver:led
  9. Android(安卓)Calendar使用过程中遇到的
  10. Android,LIstView中的OnItemClick点击无