android viewpager添加选中页标志

1,如图,对于进入软件的引导页往往需要为viewpager添加当前页面的标志。

2,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_guide"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

    <RelativeLayout
        android:id="@+id/relativeLayout"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="450dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/textView_point1_guide"
            android:layout_marginRight="15dp"
            android:background="@drawable/bg_gray_corner"
            android:layout_width="30dp"
            android:layout_height="8dp" />

        <TextView
            android:id="@+id/textView_point2_guide"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"
            android:layout_toRightOf="@+id/textView_point1_guide"
            android:background="@drawable/bg_gray_corner"
            android:layout_width="30dp"
            android:layout_height="8dp" />

        <TextView
            android:id="@+id/textView_point3_guide"
            android:layout_marginLeft="15dp"
            android:layout_toRightOf="@+id/textView_point2_guide"
            android:background="@drawable/bg_gray_corner"
            android:layout_width="30dp"
            android:layout_height="8dp" />

        <TextView
            android:id="@+id/textView_point4_guide"
            android:background="@drawable/bg_red_corner"
            android:layout_width="30dp"
            android:layout_height="8dp" />

    </RelativeLayout>

    <TextView
        android:id="@+id/textView_guide_ignore"
        android:text="立即体验"
        android:textColor="@color/white"
        android:textSize="22sp"
        android:background="@drawable/bg_red_big_corner"
        android:paddingTop="@dimen/border_middle"
        android:paddingBottom="@dimen/border_middle"
        android:paddingLeft="30dp"
        android:paddingRight="30dp"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/relativeLayout"
        android:layout_marginTop="20dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</RelativeLayout>

3,添加监听

package com.shilian.yibo;

import android.os.Build;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.shilian.yibo.adapter.GuidePagerAdapter;
import com.shilian.yibo.base.BaseFragment;

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

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

/**
 * 引导页
 * Created by Burn on 2017/6/1.
 */
public class GuideFragment extends BaseFragment {

    @BindView(R.id.viewPager_guide)
    ViewPager vp_guide;
    @BindView(R.id.textView_point1_guide)
    TextView tv_point1;
    @BindView(R.id.textView_point2_guide)
    TextView tv_point2;
    @BindView(R.id.textView_point4_guide)
    TextView tv_point4;

    private int dis;//圆点之间的距离
    private List<View> res_list;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_guide, container,false);
        unbinder=ButterKnife.bind(this, view);
        init();
        set_adapter();
        set_listener();
        return view;
    }

    /**
     * 控件和对象的初始化
     */
    private void init() {
       。。。。。
        tv_point4.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                dis=tv_point2.getLeft()-tv_point1.getLeft();
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                    tv_point4.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                }
            }
        });
    }

    /**
     * 设置适配器
     */
    public void set_adapter() {
        GuidePagerAdapter gpa = new GuidePagerAdapter(res_list);
        vp_guide.setAdapter(gpa);
    }

    /**
     * 设置监听器
     */
    public void set_listener() {
        //添加点击事件监听
        vp_guide.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) tv_point4.getLayoutParams();
                layoutParams.leftMargin = (int) (dis * positionOffset + dis * position);
                tv_point4.setLayoutParams(layoutParams);
            }
            @Override
            public void onPageSelected(int position) {
            }
            @Override
            public void onPageScrollStateChanged(int state) {
            }
        });
    }

    @OnClick(R.id.textView_guide_ignore)
    public void onClick() {
        openActivity(MainActivity.class);
        mActivity.finish();
    }
}

3,使用第三方框架viewpageindicator,实习viewpa的原点下标
导入框架

在app的build.gradle文件中添加依赖

dependencies {
    。。。。
    compile 'com.inkapplications.viewpageindicator:library:2.4.3'
}

xml布局,控制下标所在位置

<RelativeLayout
                android:padding="@dimen/border_big"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

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

                <com.viewpagerindicator.CirclePageIndicator
                    android:id="@+id/indicator_frag_home_page"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentBottom="true"
                    android:paddingBottom="@dimen/border_big"
                    app:centered="true"
                    app:fillColor="#ffffff"当前页面圆点的填充色
                    app:pageColor="#99ffffff"非当前页面圆点的填充色
                    app:strokeColor="#99ffffff"圆点外围边框的填充色
                    app:strokeWidth="2dp"圆点外围边框的宽度
                    app:radius="5dp" />圆点的半径

            </RelativeLayout>

代码设置:indicator.setViewPager(viewpager);


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值