Android APP 引导页实现-第一次应用进入时加载

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

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

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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实现初次进入应用时的引导页
  *
  * (1)判断是否是首次加载应用--采取读取SharedPreferences的方法
  * (2)是,则进入引导activity;否,则进入MainActivity
  * (3)5s后执行(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();
         
         
     }  
      
     //****************************************************************
     // 判断应用是否初次加载,读取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, ); //取得所有类名 如 com.my.MainActivity
         if (mResultStr.equalsIgnoreCase( false ))
             return false ;
         else
             return true ;
     }
      
      
     //*************************************************
     // Handler:跳转至不同页面
     //*************************************************
     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);
         }
     };
}

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

 

2.ViewPager实现翻页效果:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
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.引导页布局文件:

 

 

?
1
2
3
4
5
6
7
8
<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>

下面运行一下代码:

 

/

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

/

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值