ViewPager实现引导页(添加导航点,判断是否第一次进入主界面)

1.引导页的4个界面布局,里面加载一张背景图片

插入到guide的界面布局中(这里不用fragment)

guide_background_fragment1.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/guide_background1"/>
</LinearLayout>

guide_background_fragment2.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/guide_background2"/>
</LinearLayout>

guide_background_fragment3.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/guide_background3"/>
</LinearLayout>

guide_background_fragment4.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/guide_background4"/>
</LinearLayout>

guide.xml

<?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.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center" />

    <LinearLayout
        android:id="@+id/l1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_centerInParent="true"
        android:layout_alignParentBottom="true"
        >

        <ImageView
            android:id="@+id/imageV1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/login_point" />

        <ImageView
            android:id="@+id/imageV2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/login_point" />

        <ImageView
            android:id="@+id/imageV3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/login_point" />
        <ImageView
            android:id="@+id/imageV4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/login_point" />
    </LinearLayout>
</RelativeLayout>

2.    适配器

GuidePagerAdapter.java

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

import java.util.List;

public class GuidePagerAdapter extends PagerAdapter{
    private Context context;
    private List<View> views;
    public GuidePagerAdapter(List<View> views, Context context) {
        this.context = context;
        this.views = views;

    }
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return views.size();
    }
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        container.addView(views.get(position));
        return views.get(position);
    }
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView(views.get(position));
    }
    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        // TODO Auto-generated method stub
        return (arg0 == arg1);
    }

}

Guide.java

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.view.Window;
import android.widget.Button;
import android.widget.ImageView;

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

/**
 * Created by zps on 2015/9/3.
 */
public class Guide extends Activity implements ViewPager.OnPageChangeListener {

    private List<View> listView;
    private ViewPager viewPager;
    private GuidePagerAdapter vpAdapter;
    private int[] dotsId = {R.id.imageV1, R.id.imageV2, R.id.imageV3, R.id.imageV4};
    private ImageView[] dotsView;
    private Button lijitiyanButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.view_pager);
        init();
        initDots();

    }

    private void initDots() {
        dotsView = new ImageView[listView.size()];
        for (int i = 0; i < listView.size(); i++) {
            dotsView[i] = (ImageView) findViewById(dotsId[i]);
        }

    }

    private void init() {

        LayoutInflater inflater = LayoutInflater.from(this);
        listView = new ArrayList<View>();
        //获取View对象
        View view1 = inflater.inflate(R.layout.view_pager_img1, null);
        View view2 = inflater.inflate(R.layout.view_pager_img2, null);
        View view3 = inflater.inflate(R.layout.view_pager_img3, null);
        View view4 = inflater.inflate(R.layout.view_pager_img4, null);

        //view对象放在List<view>中
        listView.add(view1);
        listView.add(view2);
        listView.add(view3);
        listView.add(view4);
        //List<view>放在适配器ViewPagerAdapter中
        vpAdapter = new GuidePagerAdapter(listView, this);
        //获取ViewPage,设置适配器;
        viewPager = (ViewPager) findViewById(R.id.viewpager);
        viewPager.setAdapter(vpAdapter);
        viewPager.addOnPageChangeListener(this);
        lijitiyanButton =(Button) view4.findViewById(R.id.lijitiyan_button);
        lijitiyanButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Guide.this,MainActivity.class);
                startActivity(intent);
                finish();

            }
        });

    }

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

    }

    @Override
    public void onPageSelected(int position) {
        for (int i = 0; i < dotsId.length; i++) {
            if(i == position){
                dotsView[i].setImageResource(R.drawable.login_point_selected);
            }else {
                dotsView[i].setImageResource(R.drawable.login_point);
            }
        }

    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }
}

3.引导页的判断:是否第一次进入

public class GuideWelcome extends Activity{
    private static final int TIME = 2000;
    private static boolean isFirstIn = false;
    private static final  int First = 1000;
    private static final  int NoFirst = 1001;
    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what){
                case First:
                    FirstIn();
                    break;
                case NoFirst:
                    NoFirstIn();
                    break;
                default:
                    break;
            }
        }

    };

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.welcome);
        init();
    }

    private void init() {
        //存储文件名为"gudiewelcome"
        SharedPreferences sharedPreferences = getSharedPreferences("guidewelcome",MODE_PRIVATE);

        isFirstIn = sharedPreferences.getBoolean("isFirstIn",true);
        if(!isFirstIn){
          handler.sendEmptyMessageDelayed(NoFirst,TIME);
        }else {
            handler.sendEmptyMessageDelayed(First,TIME);
            //存储文件key为isFirstIn,值为false
            SharedPreferences.Editor editor = sharedPreferences.edit();
            editor.putBoolean("isFirstIn",false);
            editor.commit();
        }

    }
    private void FirstIn(){
        Intent intent = new Intent(GuideWelcome.this,Guide.class);
        startActivity(intent);
        finish();

    }
    private void NoFirstIn(){
        Intent intent = new Intent(GuideWelcome.this,TabMainActivity.class);
        startActivity(intent);
        finish();
    }

}
时间: 2024-10-20 02:25:03

ViewPager实现引导页(添加导航点,判断是否第一次进入主界面)的相关文章

用ViewPager为你的APP引导页添加视差滚动(Parallax Scrolling)效果

什么是视差滚动 视差滚动效果是怎样的 如何实现视差滚动效果 1 通过使用ViewPager实现页面的左右滑动 2 ViewPager有办法实现ParallaxScrolling吗 3 ViewPagerPageTransformer如何使用 由视差滚动效果引起的思考 以上仅是个人在开发中收集的经验欢迎大家拍砖 1. 什么是视差滚动? Parallax Scrolling(视差滚动),是一种常见的动画效果.视差一词来源于天文学,但在日常生活中也有它的身影.在疾驰的动车上看风景时,会发现越是离得近的

ViewPager之引导页

一.概述 ViewPager是android-support-v4中提供的类,它是一个容器类,常用于页面之间的切换. 本文介绍ViewPager最基础的应用:在多个View之间进行切换,亦即ViewPager的每个页面是个View. 这种模式适合每个页面的逻辑较为简单的情况,比如去实现“小红书”引导页这样的效果: 二.实现思路 2.1 页面如何布局 这个引导页一共有三个页面,毫无疑问上面的标题和配图是隶属于viewpager不同页面内部的,而下面的俩按钮则是直接放在Activity的布局中. 那

ViewPager实现引导页

1. 要使用ViewPager,必须要创建 PagerAdapter. 这里创建一个 ViewPagerAdapter来继承PagerAdapter public class ViewPagerAdapter extends PagerAdapter{ private List<View> views; // 我们引导页的list private Context context; // 上下文 public ViewPagerAdapter(List<View> views, Co

ViewPager滑动引导页

ViewPager实现Animation动画引导页   http://blog.csdn.net/ye_scofield/article/details/44831357 SurfaceView实现动画引导页(1)       http://blog.csdn.net/ye_scofield/article/details/45153743 SurfaceView实现动画引导页(2)      http://blog.csdn.net/ye_scofield/article/details/45

ViewPager滑动到最后一页再向左滑动进入主界面

在OnPageChangeListener中的onPageScrolled方法里判断 @Override public void onPageScrolled(int arg0, float arg1, int arg2) { if(arg0==list.size()-1){ openActivity(MainActivity.class); finish(); } } list为List<View> .这样当最后一个你再向左滑动的时候就会进入MainActivity了.

Android学习之——ViewPager及应用引导页的开发

背景知识 当我们第一次安装Android应用时,有的应用会有引导页,要么是用于介绍应用的新功能,要么就是关于应用的介绍,有的甚至是推广广告等. 那么这个应用引导页是怎样实现的呢?这就得有请我们今天的主角登场了——ViewPager. ViewPager介绍 ViewPager继承自ViewGroup类,属于android.support.v4.view包(这个包是Google提供给我们开发兼容低版本Android的包,主要功能是提供各种各样的类来向后处理View的兼容性). ViewPager,

你了解引导页吗?

1 引导页类型 a 前置型引导页:启动应用程序后,进入主功能前的一系列图片或者动画效果,停留数秒后消失.在用户初次实用移动产品时,给予一些必要性的帮助,以便用户快速了解产品类型,功能,具体操作 b 过程中引导:在用户使用产品过程中给出一系列帮助内容,主要方式有空白页的内容引导,loading等等状态引导,拆分包袱的逐步引导,巧设默认值的功能引导,tips引导,浮点引导,遮罩聚焦式引导,触发式引导,任务演练式引导等. 2 引导内容 7±2效应:一个人的短时记忆至少能回忆出5个字,最多回忆9个,即7

android使用ViewPager实现欢迎引导页

android使用ViewPager实现欢迎引导页 大多数APP第一次启动的时候,都会有一个引导界面,左右滑动,到最后一张,用户点击才再次进入主界面.当第二次启动的时候,则直接进入主界面. 这种效果一般使用ViewPager实现.今天就来为大家介绍一下ViewPager的使用. 实现步骤: 使用SharedPerferences来记录是否是第一次启动APP,如果是,则转跳到Guide页面,如果不是第一次启动.就转跳到主Activity. MainActivity: 本Activity作为Logo

Android基础控件——ViewPager实现带有动画的引导页

好了,又到我们学习基础控件的时候了,其实引导页很简单,就是五张图片而已 传统的ViewPager实现引导页和ListView是一样道理的,只是把ListView的Item换成图片,把BaseAdapter换成PagerAdapter,我们先来看下传统引导页的效果图 既然用到的是ViewPager,那么xml文件就必须要有ViewPager,细心的你,可能会发现最后一页还有个按钮的出现,没错,xml文件中也要有个按钮 开头也说了,Viewpager其实就和ListView一样的,需要一个Adapt