APP引导页是每个优质APP必备的元素,下面我们研究一下如何只在第一次进入应用时进行加载引导页的方法。

1.判断是否第一次进入应用的方法:

packagecom.yayun.guide;importandroid.app.Activity;importandroid.content.Context;importandroid.content.Intent;importandroid.content.SharedPreferences;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.Message;importandroid.widget.Toast;/***功能:使用ViewPager实现初次进入应用时的引导页**(1)判断是否是首次加载应用--采取读取SharedPreferences的方法*(2)是,则进入引导activity;否,则进入MainActivity*(3)5s后执行(2)操作**@authoryayun**/publicclassSplashActivityextendsActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);//setContentView(R.layout.activity_splash);booleanmFirst=isFirstEnter(SplashActivity.this,SplashActivity.this.getClass().getName());Toast.makeText(this,mFirst+,Toast.LENGTH_SHORT).show();if(mFirst)mHandler.sendEmptyMessageDelayed(SWITCH_GUIDACTIVITY,100);elsemHandler.sendEmptyMessageDelayed(SWITCH_MAINACTIVITY,100);SharedPreferencessharedPreferences=this.getSharedPreferences(my_pref,MODE_PRIVATE);sharedPreferences.edit().putString(guide_activity,false).commit();}//****************************************************************//判断应用是否初次加载,读取SharedPreferences中的guide_activity字段//****************************************************************privatestaticfinalStringSHAREDPREFERENCES_NAME=my_pref;privatestaticfinalStringKEY_GUIDE_ACTIVITY=guide_activity;privatebooleanisFirstEnter(Contextcontext,StringclassName){if(context==null||className==null||.equalsIgnoreCase(className))returnfalse;StringmResultStr=context.getSharedPreferences(SHAREDPREFERENCES_NAME,Context.MODE_WORLD_READABLE).getString(KEY_GUIDE_ACTIVITY,);//取得所有类名如com.my.MainActivityif(mResultStr.equalsIgnoreCase(false))returnfalse;elsereturntrue;}//*************************************************//Handler:跳转至不同页面//*************************************************privatefinalstaticintSWITCH_MAINACTIVITY=1000;privatefinalstaticintSWITCH_GUIDACTIVITY=1001;publicHandlermHandler=newHandler(){publicvoidhandleMessage(Messagemsg){switch(msg.what){caseSWITCH_MAINACTIVITY:IntentmIntent=newIntent();mIntent.setClass(SplashActivity.this,Welcome.class);SplashActivity.this.startActivity(mIntent);SplashActivity.this.finish();break;caseSWITCH_GUIDACTIVITY:mIntent=newIntent();mIntent.setClass(SplashActivity.this,GuideActivity.class);SplashActivity.this.startActivity(mIntent);SplashActivity.this.finish();break;}super.handleMessage(msg);}};}

原理很简单,进入的时候进行判断有无存值,若无存值则表示第一次进入,这时跳入应用引导页,否则,跳入主页面。

2.ViewPager实现翻页效果:

packagecom.yayun.guide;importjava.util.ArrayList;importjava.util.List;importandroid.app.Activity;importandroid.content.Intent;importandroid.os.Bundle;importandroid.support.v4.view.PagerAdapter;importandroid.support.v4.view.ViewPager;importandroid.support.v4.view.ViewPager.OnPageChangeListener;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.view.ViewGroup;importandroid.view.Window;importandroid.widget.Button;importandroid.widget.LinearLayout;publicclassGuideActivityextendsActivityimplementsOnClickListener{privateViewPagermViewPager;privatePagerAdaptermAdapter;privateList<view>mViews=newArrayList<view>();//TABprivateLinearLayoutmTabWeixin;privateLinearLayoutmTabFrd;privateLinearLayoutmTabAddress;privateLinearLayoutmTabSetting;privateButtonmEnterButton;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);initView();initEvents();}privatevoidinitEvents(){mViewPager.setOnPageChangeListener(newOnPageChangeListener(){@OverridepublicvoidonPageSelected(intarg0){}@OverridepublicvoidonPageScrolled(intarg0,floatarg1,intarg2){}@OverridepublicvoidonPageScrollStateChanged(intarg0){}});}privatevoidinitView(){mViewPager=(ViewPager)findViewById(R.id.id_viewpager);LayoutInflatermInflater=LayoutInflater.from(this);Viewtab01=mInflater.inflate(R.layout.tab01,null);Viewtab02=mInflater.inflate(R.layout.tab02,null);Viewtab03=mInflater.inflate(R.layout.tab03,null);Viewtab04=mInflater.inflate(R.layout.tab04,null);mViews.add(tab01);mViews.add(tab02);mViews.add(tab03);mViews.add(tab04);mEnterButton=(Button)tab04.findViewById(R.id.imgbtn_enter);mEnterButton.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){Intentintent=newIntent(GuideActivity.this,Welcome.class);startActivity(intent);}});mAdapter=newPagerAdapter(){@OverridepublicvoiddestroyItem(ViewGroupcontainer,intposition,Objectobject){container.removeView(mViews.get(position));}@OverridepublicObjectinstantiateItem(ViewGroupcontainer,intposition){Viewview=mViews.get(position);container.addView(view);returnview;}@OverridepublicbooleanisViewFromObject(Viewarg0,Objectarg1){returnarg0==arg1;}@OverridepublicintgetCount(){returnmViews.size();}};mViewPager.setAdapter(mAdapter);}@OverridepublicvoidonClick(Viewv){}}</view></view>

3.引导页布局文件:

<linearlayoutandroid:layout_height="match_parent"android:layout_width="match_parent"android:orientation="vertical"xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"></android.support.v4.view.viewpager></linearlayout>

下面运行一下代码:

我们可以发现,第一次进入页面的时候,Toast打印出true,表示应用第一次进入,这时加载引导页。

退出应用,再一次进入时,Toast打印false,表示应用已经不是不是第一次进入了。这时我们的功能基本实现了。