您好,登錄后才能下訂單哦!
APP引導(dǎo)頁(yè)是每個(gè)優(yōu)質(zhì)APP必備的元素,下面我們研究一下如何只在第一次進(jìn)入應(yīng)用時(shí)進(jìn)行加載引導(dǎo)頁(yè)的方法。
1.判斷是否第一次進(jìn)入應(yīng)用的方法:
package com.yayun.guide; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.widget.Toast; /** * 功能:使用ViewPager實(shí)現(xiàn)初次進(jìn)入應(yīng)用時(shí)的引導(dǎo)頁(yè) * * (1)判斷是否是首次加載應(yīng)用--采取讀取SharedPreferences的方法 * (2)是,則進(jìn)入引導(dǎo)activity;否,則進(jìn)入MainActivity * (3)5s后執(zhí)行(2)操作 * * @author yayun * */ public class SplashActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_splash); boolean mFirst = isFirstEnter(SplashActivity.this,SplashActivity.this.getClass().getName()); Toast.makeText(this, mFirst+, Toast.LENGTH_SHORT).show(); if(mFirst) mHandler.sendEmptyMessageDelayed(SWITCH_GUIDACTIVITY,100); else mHandler.sendEmptyMessageDelayed(SWITCH_MAINACTIVITY,100); SharedPreferences sharedPreferences= this.getSharedPreferences(my_pref, MODE_PRIVATE); sharedPreferences.edit().putString(guide_activity, false).commit(); } //**************************************************************** // 判斷應(yīng)用是否初次加載,讀取SharedPreferences中的guide_activity字段 //**************************************************************** private static final String SHAREDPREFERENCES_NAME = my_pref; private static final String KEY_GUIDE_ACTIVITY = guide_activity; private boolean isFirstEnter(Context context,String className){ if(context==null || className==null||.equalsIgnoreCase(className))return false; String mResultStr = context.getSharedPreferences(SHAREDPREFERENCES_NAME, Context.MODE_WORLD_READABLE) .getString(KEY_GUIDE_ACTIVITY, );//取得所有類(lèi)名 如 com.my.MainActivity if(mResultStr.equalsIgnoreCase(false)) return false; else return true; } //************************************************* // Handler:跳轉(zhuǎn)至不同頁(yè)面 //************************************************* private final static int SWITCH_MAINACTIVITY = 1000; private final static int SWITCH_GUIDACTIVITY = 1001; public Handler mHandler = new Handler(){ public void handleMessage(Message msg) { switch(msg.what){ case SWITCH_MAINACTIVITY: Intent mIntent = new Intent(); mIntent.setClass(SplashActivity.this, Welcome.class); SplashActivity.this.startActivity(mIntent); SplashActivity.this.finish(); break; case SWITCH_GUIDACTIVITY: mIntent = new Intent(); mIntent.setClass(SplashActivity.this, GuideActivity.class); SplashActivity.this.startActivity(mIntent); SplashActivity.this.finish(); break; } super.handleMessage(msg); } }; }
原理很簡(jiǎn)單,進(jìn)入的時(shí)候進(jìn)行判斷有無(wú)存值,若無(wú)存值則表示第一次進(jìn)入,這時(shí)跳入應(yīng)用引導(dǎo)頁(yè),否則,跳入主頁(yè)面。
2.ViewPager實(shí)現(xiàn)翻頁(yè)效果:
package com.yayun.guide; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.Window; import android.widget.Button; import android.widget.LinearLayout; public class GuideActivity extends Activity implements OnClickListener { private ViewPager mViewPager; private PagerAdapter mAdapter; private List<view> mViews = new ArrayList<view>(); // TAB private LinearLayout mTabWeixin; private LinearLayout mTabFrd; private LinearLayout mTabAddress; private LinearLayout mTabSetting; private Button mEnterButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); initView(); initEvents(); } private void initEvents() { mViewPager.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { } }); } private void initView() { mViewPager = (ViewPager) findViewById(R.id.id_viewpager); LayoutInflater mInflater = LayoutInflater.from(this); View tab01 = mInflater.inflate(R.layout.tab01, null); View tab02 = mInflater.inflate(R.layout.tab02, null); View tab03 = mInflater.inflate(R.layout.tab03, null); View tab04 = 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(new OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(GuideActivity.this,Welcome.class); startActivity(intent); } }); mAdapter = new PagerAdapter() { @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(mViews.get(position)); } @Override public Object instantiateItem(ViewGroup container, int position) { View view = mViews.get(position); container.addView(view); return view; } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } @Override public int getCount() { return mViews.size(); } }; mViewPager.setAdapter(mAdapter); } @Override public void onClick(View v) { } } </view></view>
3.引導(dǎo)頁(yè)布局文件:
<linearlayout android: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>
下面運(yùn)行一下代碼:
我們可以發(fā)現(xiàn),第一次進(jìn)入頁(yè)面的時(shí)候,Toast打印出true,表示應(yīng)用第一次進(jìn)入,這時(shí)加載引導(dǎo)頁(yè)。
退出應(yīng)用,再一次進(jìn)入時(shí),Toast打印false,表示應(yīng)用已經(jīng)不是不是第一次進(jìn)入了。這時(shí)我們的功能基本實(shí)現(xiàn)了。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。