当前位置: 移动互联网学院 > Android开发 > Android启动页和导航页制作
Android启动页和导航页制作 时间:2017-06-16     来源:移动互联网学院

1、 引言:随着Android应用的推广,我们发现很多应用都会有一个启动页面首先慢慢隐现,然后再慢慢消隐。如果第一次启动或升级该应用,启动页面过后会进入到一个导航页面,目的是为了给用户介绍该应用的特点或升级后的改进。所以Android应用的启动页与导航页的制作也是非常常见。本篇博客,就为大家分享一下Android应用启动页与导航页的其中一种制作方式。

2、 效果如下:

首次启动

3、 实现步骤:

1) 准备三个Activity与界面,分别是SplashActivity(启动页)、GuideActivity(导航页)与MainActivity(主页)。

2) 实现SplashActivity界面延时,并准备两个方法goGuide(),goHome()分别跳转到之后的GuideActivty(导航页)和MainActivity(主页)。

3) GuideActivity中使用ViewPager和Fragment实现页面滚动,并在后一个Fragment中制作一个跳转到MainActivity页面的Button。

4) 实现判断第一次启动APP,在SplashActivity中使用SharedPreferences储存APP的开启状态,之后进行判断,如果第一次启动实现goGuide()方法,跳转到导航页,否则直接进入主页。

4、 涉及知识点:

1) SharedPreferences存储,实现应用开启状态保存

SharedPreferences sharedPreferences = this.getSharedPreferences("share", MODE_PRIVATE);

Boolean user_first = sharedPreferences.getBoolean("FIRST", true);

Editor editor = sharedPreferences.edit();

2) sendEmptyMessageDelayed方法,实现界面延时

handler.sendEmptyMessageDelayed(GO_GUIDE, DELAY);

5、 代码实现:

1) SplashActivty:

package com.farsight.zguidesplash;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.app.Activity;

import android.content.Intent;

import android.content.SharedPreferences;

import android.content.SharedPreferences.Editor;

import android.view.Window;

public class SplashActivity extends Activity {

private static final int GO_HOME = 1000;// 跳转到主页标识

private static final int GO_GUIDE = 1001;// 跳转到导航页标识

private static final int DELAY = 3000;// 延时时间

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.activity_splash);

init();

}

private void init() {

SharedPreferences sharedPreferences = this.getSharedPreferences(

"share", MODE_PRIVATE);

Boolean user_first = sharedPreferences.getBoolean("FIRST", true);

Editor editor = sharedPreferences.edit();// 使用SharedPreferences存储应用开启状态

if (user_first) {// 判断是否为第一次开启APP,并将标识传给Handler机制

editor.putBoolean("FIRST", false);

editor.commit();

handler.sendEmptyMessageDelayed(GO_GUIDE, DELAY);

} else {

handler.sendEmptyMessageDelayed(GO_HOME, DELAY);

}

}

private Handler handler = new Handler() {// 通过接收到的标识实现具体方法,跳转到主页或导航页

@Override

public void handleMessage(Message msg) {

// TODO Auto-generated method stub

switch (msg.what) {

case GO_HOME:

goHome();

break;

case GO_GUIDE:

goGuide();

break;

}

}

};

public void goHome() {// 跳转到主页

startActivity(new Intent(SplashActivity.this, MainActivity.class));

finish();

}

public void goGuide() {// 跳转到导航页

startActivity(new Intent(SplashActivity.this, GuideActivity.class));

finish();

}

}

2) GuideActivity:

package com.farsight.zguidesplash;

import java.util.ArrayList;

import android.os.Bundle;

import android.support.v4.app.Fragment;

import android.support.v4.app.FragmentActivity;

import android.support.v4.app.FragmentManager;

import android.support.v4.app.FragmentPagerAdapter;

import android.support.v4.view.ViewPager;

import android.view.Window;

import com.farsight.fragment.FirstFragment;

import com.farsight.fragment.LastFragment;

import com.farsight.fragment.SecondFragment;

public class GuideActivity extends FragmentActivity {

private ViewPager viewPager;

private ArrayList<Fragment> pagerData;

@Override

protected void onCreate(Bundle savedInstanceState) {

requestWindowFeature(Window.FEATURE_NO_TITLE);

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_guide);

initID();

initPager();

setViewPager();

}

public void initID() {// 初始化UI组件

viewPager = (ViewPager) findViewById(R.id.viewPager_Guide);

}

public void initPager() {// 初始化ViewPager中的Fragment页面

pagerData = new ArrayList<Fragment>();

pagerData.add(new FirstFragment());

pagerData.add(new SecondFragment());

pagerData.add(new LastFragment());

}

public void setViewPager() {// 设置ViewPager

viewPager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager()));

}

private class ViewPagerAdapter extends FragmentPagerAdapter {// ViewPager适配器

public ViewPagerAdapter(FragmentManager fm) {

super(fm);

// TODO Auto-generated constructor stub

}

@Override

public Fragment getItem(int arg0) {

// TODO Auto-generated method stub

return pagerData.get(arg0);

}

@Override

public int getCount() {

// TODO Auto-generated method stub

return pagerData.size();

}

}

}