Android ViewPager简单实现 - 倒计时、引导页左右滑动

说明:

ViewPager简单实现,方便以后用。做的是一个全屏的引导页。

截图:


代码:

GuideActivity.java

package com.xinyan.personal.ui.activity;

import android.content.Intent;
import android.gesture.GestureUtils;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.support.annotation.Nullable;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.xinyan.personal.MainActivity;
import com.xinyan.personal.R;
import com.xinyan.personal.adapter.GuideAdapter;
import com.xinyan.personal.util.SPUtils;
import com.xinyan.personal.util.UiUtil;

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

/**
 * 引导页
 * Created by zst on 2017/8/2.
 */

public class GuideActivity extends BaseActivity implements ViewPager.OnPageChangeListener, View.OnClickListener{
    private ViewPager vp_guide;
    private TextView tv_skip;
    private TextView tv_begin;
    private ImageView iv_dot_0;
    private ImageView iv_dot_1;
    private ImageView iv_dot_2;

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

        vp_guide = (ViewPager) findViewById(R.id.vp_guide);
        tv_skip = (TextView) findViewById(R.id.tv_skip);
        tv_begin = (TextView) findViewById(R.id.tv_begin);
        iv_dot_0 = (ImageView) findViewById(R.id.iv_dot_0);
        iv_dot_1 = (ImageView) findViewById(R.id.iv_dot_1);
        iv_dot_2 = (ImageView) findViewById(R.id.iv_dot_2);

        tv_skip.setOnClickListener(this);
        tv_begin.setOnClickListener(this);

        initBanner();
        countDownTimer();
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.tv_begin:
                SPUtils.setParam(GuideActivity.this, SPUtils.GUIDE_STATUS, true);
                startActivity(new Intent(GuideActivity.this, MainActivity.class));
                finish();
                break;
            case R.id.tv_skip:
                SPUtils.setParam(GuideActivity.this, SPUtils.GUIDE_STATUS, true);
                startActivity(new Intent(GuideActivity.this, MainActivity.class));
                finish();
                break;
        }
    }

    //初始化三张引导页
    private void initBanner() {
        List<Integer> images = new ArrayList<>();
        images.add(R.drawable.pic_guide_0);
        images.add(R.drawable.pic_guide_1);
        images.add(R.drawable.pic_guide_2);

        GuideAdapter guideAdapter = new GuideAdapter(GuideActivity.this, images);
        vp_guide.setAdapter(guideAdapter);
        vp_guide.addOnPageChangeListener(this);
    }

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

    }

    @Override
    public void onPageSelected(int position) {
        setDefalutDot();

        if(position == 0) {
            iv_dot_0.setImageResource(R.drawable.ic_ad_dot_check);
        }
        if(position == 1) {
            iv_dot_1.setImageResource(R.drawable.ic_ad_dot_check);
        }
        if(position == 2) {
            iv_dot_2.setImageResource(R.drawable.ic_ad_dot_check);
            tv_begin.setVisibility(View.VISIBLE);
        }

    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }

    //设置默认的dot
    private void setDefalutDot() {
        tv_begin.setVisibility(View.GONE);
        iv_dot_0.setImageResource(R.drawable.ic_ad_dot_default);
        iv_dot_1.setImageResource(R.drawable.ic_ad_dot_default);
        iv_dot_2.setImageResource(R.drawable.ic_ad_dot_default);
    }


    /**
     * 5秒倒计时;
     */
    public void countDownTimer() {
        CountDownTimer timer = new CountDownTimer(5000, 1000) {
            @Override
            public void onTick(long millisUntilFinished) {
                tv_skip.setText("跳过" + millisUntilFinished / 1000);
                tv_skip.setEnabled(false);
            }

            @Override
            public void onFinish() {
                tv_skip.setText("跳过");
                tv_skip.setEnabled(true);
            }
        };
        timer.start();
    }
}

activity_guide.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:app="http://schemas.android.com/apk/res-auto"
              android:layout_width="match_parent" android:layout_height="match_parent"
              android:background="@color/bg_efeff4"
              android:orientation="vertical">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

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

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="20dp"
            android:orientation="vertical">

            <TextView
                android:id="@+id/tv_begin"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:background="@drawable/shape_btn_guide_use"
                android:text="申请试用"
                android:textColor="@color/white"
                android:visibility="gone"/>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:layout_marginTop="30dp">

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

                <ImageView
                    android:id="@+id/iv_dot_1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:src="@drawable/ic_ad_dot_default"/>

                <ImageView
                    android:id="@+id/iv_dot_2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:src="@drawable/ic_ad_dot_default"/>
            </LinearLayout>
        </LinearLayout>

        <TextView
            android:id="@+id/tv_skip"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:background="@drawable/shape_btn_guide_second"
            android:layout_margin="20dp"
            android:paddingTop="5dp"
            android:paddingBottom="5dp"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:clickable="false"
            android:textSize="11sp"
            android:text="跳过 5"
            android:textColor="@color/white"/>
    </RelativeLayout>
</LinearLayout>

GuideAdapter.java

package com.xinyan.personal.adapter;


import android.content.Context;
import android.content.Intent;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.xinyan.personal.R;
import com.xinyan.personal.httpManager.response.NoticeListResponse;
import com.xinyan.personal.ui.activity.MsgDetailActivity;

import java.util.List;
import java.util.Map;

/**
 * 引导页配器
 * Created by zst on 2017/8/2.
 */

public class GuideAdapter extends PagerAdapter {
    Context context;
    List<Integer> viewLists;

    public GuideAdapter(Context context, List<Integer> lists) {
        this.viewLists = lists;
        this.context = context;
    }

    @Override
    public int getCount() {  //获得size
        return viewLists.size();
    }

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

    @Override
    public void destroyItem(ViewGroup view, int position, Object object) { //销毁Item

    }

    @Override
    public Object instantiateItem(ViewGroup view, int position){ //实例化Item
        ImageView imageView = new ImageView(context);
        ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(
                ViewPager.LayoutParams.MATCH_PARENT,ViewPager.LayoutParams.MATCH_PARENT);
        imageView.setLayoutParams(params);
        imageView.setScaleType(ImageView.ScaleType.CENTER);
        Glide.with(context)
                .load(viewLists.get(position))
                .into(imageView);
        view.addView(imageView);

        return imageView;
    }
}


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Beluga_白鲸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值