文章目录
  1. 1. 简单介绍
  2. 2. 实例

简单介绍

一个完整的Android应用一般都会有进入应用时的欢迎页,首次使用的导航页。本篇介绍使用ViewPager实现该功能的方法。

实例

首先建立三个导航页面xml,然后建立一个管理导航页面的xml,我的如下:

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
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent">

</android.support.v4.view.ViewPager>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:gravity="center_horizontal"
android:orientation="horizontal">

<ImageView
android:id="@+id/iv_point1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/guide_point_selected" />

<ImageView
android:id="@+id/iv_point2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/guide_point" />

<ImageView
android:id="@+id/iv_point3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/guide_point" />
</LinearLayout>

</RelativeLayout>

然后欢迎页的类WelcomeActivity

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
package com.carlos.guide;

import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class WelcomeActivity extends AppCompatActivity {

private boolean isFirstIn=false;
private static final int TIME=2*1000;//延迟两秒
private static final int GO_HOME=0;
private static final int GO_GUIDE=1;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//初始化控件
initView();
}

private void initView(){
SharedPreferences preferences=getSharedPreferences("guide",MODE_PRIVATE);
isFirstIn=preferences.getBoolean("isFirstIn",true);
if(isFirstIn){//如果第一次进入就显示导航页,第二次以后就不用显示
handler.sendEmptyMessageDelayed(GO_GUIDE,TIME);
}else{
handler.sendEmptyMessageDelayed(GO_HOME,TIME);
SharedPreferences.Editor editor=preferences.edit();
editor.putBoolean("isFirstIn",false);
editor.commit();
}
}

/**
* 进入引导页面
*/
private void goGuide(){
Intent intent=new Intent(WelcomeActivity.this,GuideActivity.class);
startActivity(intent);
finish();
}

/**
* 进入主界面
*/
private void goHome(){
Intent intent =new Intent(WelcomeActivity.this,HomeActivity.class);
startActivity(intent);
finish();
}

Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case GO_GUIDE:
goGuide();
break;
case GO_HOME:
goHome();
break;
}
}
};

}

新建的ViewPagerAdapter适配器

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
package com.carlos.guide;

import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;

import java.util.List;


/**
* Created by xiaobudian on 2015/12/8.
*/
public class ViewPagerAdapter extends PagerAdapter{

//界面列表
private List<View> views;
private Context context;

public ViewPagerAdapter(List<View> views,Context context){
this.views=views;
this.context=context;
}

//销毁position位置的界面
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager)container).removeView(views.get(position));
}

//初始化position位置的界面
@Override
public Object instantiateItem(ViewGroup container, int position) {
((ViewPager)container).addView(views.get(position));
return views.get(position);
}

@Override
public int getCount() {
return views.size();
}

@Override
public boolean isViewFromObject(View view, Object object) {
return (view==object);
}
}

新建引导页的类GuideActivity

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
package com.carlos.guide;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

import java.util.ArrayList;
import java.util.List;

/**
* Created by xiaobudian on 2015/12/7.
*/
public class GuideActivity extends Activity implements ViewPager.OnPageChangeListener{

private ViewPager viewPager;
private ViewPagerAdapter viewPagerAdapter;
private List<View> views;
private ImageView[] dots;
private int[] ids={R.id.iv_point1,R.id.iv_point2,R.id.iv_point3};
private Button b_enter;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.guide);

//初始化界面
initViews();
//初始化小圆点
initDots();
}

public void initViews(){
LayoutInflater layoutInflater=LayoutInflater.from(this);
views=new ArrayList<>();
views.add(layoutInflater.inflate(R.layout.guide_one,null));
views.add(layoutInflater.inflate(R.layout.guide_two,null));
views.add(layoutInflater.inflate(R.layout.guide_three,null));
viewPagerAdapter=new ViewPagerAdapter(views,this);
viewPager= (ViewPager) findViewById(R.id.viewpager);
viewPager.setAdapter(viewPagerAdapter);
b_enter= (Button) views.get(2).findViewById(R.id.b_enter);
b_enter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(GuideActivity.this, HomeActivity.class);
startActivity(intent);
finish();
}
});
viewPager.setOnPageChangeListener(this);
}

public void initDots(){
dots=new ImageView[views.size()];
for(int i=0;i<views.size();i++){
dots[i]=(ImageView)findViewById(ids[i]);
}
}

@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}

@Override
public void onPageSelected(int position) {
for(int i=0;i<ids.length;i++){
if(position==i){
dots[i].setImageResource(R.mipmap.guide_point_selected);
}else{
dots[i].setImageResource(R.mipmap.guide_point);
}
}
}

@Override
public void onPageScrollStateChanged(int state) {

}
}

最后自己写主界面的实现功能。运行即可以看到首次打开时出现欢迎页面,延迟两秒后到导航页面,三个导航页面滑动后点击进入即到了主界面。以后再进入时就直接从欢迎页面到主界面。

文章目录
  1. 1. 简单介绍
  2. 2. 实例