前兩天寫了這個的主要實現的原理,沒有寫具體代碼實現,看得人不多,現在寫出具體代碼
代碼貼出來,注釋已經很詳細,不多說,有問題可以留言 PS注意配合上一篇部落格看源碼會更簡單
SharedPreferencesUtil.java
package com.yufeng.yufenglashou.util;import android.content.Context;import com.yufeng.yufenglashou.moder.LaShouApplication;public class SharedPreferencesUtil { public static void keepPreference(String key, String valse) { // Context.MODE_PRIVATE代表在data/data下建立的喜好設定檔案是私人的 LaShouApplication.context .getSharedPreferences("lashou", Context.MODE_PRIVATE).edit() .putString(key, valse).commit();// 記得擷取edit對象後一定要commit提交 } /** * 當返回Null 字元串則不存在 * * @param key * @return */ public static String getPreference(String key) { // Context.MODE_PRIVATE代表在data/data下建立的喜好設定檔案是私人的 return LaShouApplication.context.getSharedPreferences("lashou", Context.MODE_PRIVATE).getString(key, ""); }}
HomeActivity.java
package com.yufeng.yufenglashou;import android.app.Activity;import android.os.Bundle;import android.widget.Toast;public class HomeActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Toast.makeText(this, "這是首頁", Toast.LENGTH_LONG).show(); }}
GuideActivity.java
package com.yufeng.yufenglashou;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.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageView;import com.yufeng.yufenglashou.adapter.GuideAdapter;public class GuideActivity extends Activity { private Button guideButton; private ViewPager guideViewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.guide); // 初始化view setUpView(); // 給控制項添加監聽 addListener(); } private void addListener() { // 因為我們的引導頁是在最後一個頁面有一個按鈕叫立即體驗的 // 本來按鈕是預設不現實的,我們就需要監聽guideViewpage的onpageChageListener guideViewPager.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { // 當滾動狀態的變化 // 我們只處理這裡就可以了 // 當為2的時候就是第三頁 if (arg0 == 2) { // 設定顯示 guideButton.setVisibility(View.VISIBLE); } else { // 設定不顯示 guideButton.setVisibility(View.GONE); } } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { // 此方法將被調用時,當前頁面滾動,無論是作為一個程式啟動平滑滾動或使用者發起的觸摸滾動。 } @Override public void onPageScrollStateChanged(int arg0) { // 此方法將被調用時,新的一頁,成為選擇。 } }); guideButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { GuideActivity.this.startActivity(new Intent(GuideActivity.this, HomeActivity.class)); } }); } private void setUpView() { guideButton = (Button) findViewById(R.id.guide_button); guideViewPager = (ViewPager) findViewById(R.id.guide_viewpage); // 整理歡迎介面圖片到控制項 List<View> guides = new ArrayList<View>(); ImageView imageView = new ImageView(this); imageView.setImageResource(R.drawable.guide1); guides.add(imageView); ImageView imageView1 = new ImageView(this); imageView1.setImageResource(R.drawable.guide2); guides.add(imageView1); ImageView imageView11 = new ImageView(this); imageView11.setImageResource(R.drawable.guide3); guides.add(imageView11); GuideAdapter guideAdapter = new GuideAdapter(guides); guideViewPager.setAdapter(guideAdapter); }}
GuideAdapter.java
package com.yufeng.yufenglashou.adapter;import java.util.List;import android.support.v4.view.PagerAdapter;import android.view.View;import android.view.ViewGroup;public class GuideAdapter extends PagerAdapter { private List<View> views; public GuideAdapter(List<View> views) { this.views = views; } @Override public int getCount() { return views.size(); } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } // 刪除view @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); object = null; } // 添加view @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(views.get(position)); return views.get(position); }}
LaShouApplication.java
package com.yufeng.yufenglashou.moder;import android.app.Application;import android.content.Context;/** * 建立application要在androidmanifest裡面註冊,不然是不會執行的 這個類在軟體最先啟動,最後掛 * * @author Administrator * */public class LaShouApplication extends Application { /** * 共用出自己以便其他地方用到 */ public static Context context; @Override public void onCreate() { super.onCreate(); context = this; }}
WelcomeActivity.java
package com.yufeng.yufenglashou;import com.yufeng.yufenglashou.moder.LaShouApplication;import com.yufeng.yufenglashou.util.SharedPreferencesUtil;import android.app.Activity;import android.content.Intent;import android.content.pm.PackageManager.NameNotFoundException;import android.os.Bundle;import android.os.Handler;import android.os.Handler.Callback;import android.os.Message;public class WelcomeActivity extends Activity { private String versionName; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); try { // 擷取我們項目包名的管理器並且擷取版本號碼 versionName = LaShouApplication.context.getPackageManager() .getPackageInfo("com.yufeng.yufenglashou", 0).versionName; } catch (NameNotFoundException e) { e.printStackTrace(); } // 介面什麼都不做停留三秒以後執行到handlerMessage方法 new Handler(new Callback() { @Override public boolean handleMessage(Message msg) { // 我們在這判斷是不是第一次開啟 if (SharedPreferencesUtil.getPreference(versionName).equals( "true")) { // 不是第一次開啟,跳轉到首頁 WelcomeActivity.this.startActivity(new Intent( WelcomeActivity.this, HomeActivity.class)); } else { // 當取到的不是true就代表是""即沒有存入就是第一次開啟 // 跳轉到引導頁 WelcomeActivity.this.startActivity(new Intent( WelcomeActivity.this, GuideActivity.class)); // 儲存已經開啟 SharedPreferencesUtil.keepPreference(versionName, "true"); } return false; } }).sendEmptyMessageDelayed(0, 1500); }}