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,表示应用已经不是不是第一次进入了。这时我们的功能基本实现了。