千变万化的ViewPager指示器-MagicIndicator

简介: 千变万化的ViewPager指示器-MagicIndicator

作者原文章链接


MagicIndicator系列之一 —— 使用MagicIndicator打造千变万化的ViewPager指示器

MagicIndicator系列之二 —— MagicIndicator使用指南

MagicIndicator系列之三 —— MagicIndicator原理浅析及扩展MagicIndicator的4种方式


github地址:https://github.com/hackware1993/MagicIndicator


效果图:


image.png

image.png

项目实现效果:

image.png

重新封装了一个工具类:MagicIndicatorUtil

参数我不一一说明了,基本都能看懂

package com.jky.mobilebzt.util;
import android.content.Context;
import android.graphics.Color;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.DecelerateInterpolator;
import com.jky.mobilebzt.R;
import net.lucode.hackware.magicindicator.MagicIndicator;
import net.lucode.hackware.magicindicator.ViewPagerHelper;
import net.lucode.hackware.magicindicator.buildins.UIUtil;
import net.lucode.hackware.magicindicator.buildins.commonnavigator.CommonNavigator;
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter;
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerIndicator;
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerTitleView;
import net.lucode.hackware.magicindicator.buildins.commonnavigator.indicators.LinePagerIndicator;
import net.lucode.hackware.magicindicator.buildins.commonnavigator.titles.SimplePagerTitleView;
public class MagicIndicatorUtil {
    public static void initMagicIndicator(View view, Context context, String[] titleArray, ViewPager mPager,MagicIndicator magicIndicator) {
        magicIndicator.setBackgroundColor(Color.parseColor("#fafafa"));
        CommonNavigator commonNavigator7 = new CommonNavigator(context);
        commonNavigator7.setScrollPivotX(0.65f);
        commonNavigator7.setAdjustMode(true);
        commonNavigator7.setAdapter(new CommonNavigatorAdapter() {
            @Override
            public int getCount() {
                return titleArray == null ? 0 : titleArray.length;
            }
            @Override
            public IPagerTitleView getTitleView(Context context, final int index) {
                SimplePagerTitleView simplePagerTitleView = new SimplePagerTitleView(context);
                simplePagerTitleView.setText(titleArray[index]);
                simplePagerTitleView.setNormalColor(Color.parseColor("#9e9e9e"));
                simplePagerTitleView.setSelectedColor(context.getResources().getColor(R.color.color_green));
                simplePagerTitleView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        mPager.setCurrentItem(index);
                    }
                });
                return simplePagerTitleView;
            }
            @Override
            public IPagerIndicator getIndicator(Context context) {
                LinePagerIndicator indicator = new LinePagerIndicator(context);
                indicator.setMode(LinePagerIndicator.MODE_EXACTLY);
                indicator.setLineHeight(UIUtil.dip2px(context, 3));
                indicator.setLineWidth(UIUtil.dip2px(context, 40));
                indicator.setRoundRadius(UIUtil.dip2px(context, 2));
                indicator.setStartInterpolator(new AccelerateInterpolator());
                indicator.setEndInterpolator(new DecelerateInterpolator(2.0f));
                indicator.setColors(context.getResources().getColor(R.color.color_green));
                return indicator;
            }
        });
        magicIndicator.setNavigator(commonNavigator7);
        ViewPagerHelper.bind(magicIndicator, mPager);
    }
}

用法:

build.gradle

    implementation 'com.github.hackware1993:MagicIndicator:1.6.0'

xml

       <net.lucode.hackware.magicindicator.MagicIndicator
                android:id="@+id/book_indicator"
                android:layout_width="match_parent"
                android:layout_height="@dimen/margin_45"
                android:layout_marginTop="@dimen/margin_5" />

activity中

  MagicIndicator magicIndicator = view.findViewById(R.id.book_indicator);
        MagicIndicatorUtil.initMagicIndicator(view,getActivity(),mBookArray,mSlidePager,magicIndicator);


相关文章
|
Android开发
两种方法,教你解决 ViewPager 嵌套 ViewPager滑动冲突(一)
两种方法,教你解决 ViewPager 嵌套 ViewPager滑动冲突
|
Android开发 UED 开发者
两种方法,教你解决 ViewPager 嵌套 ViewPager滑动冲突(二)
两种方法,教你解决 ViewPager 嵌套 ViewPager滑动冲突
ViewPager 显示 两侧的View,各显示一点
ViewPager 显示 两侧的View,各显示一点
ViewPager 显示 两侧的View,各显示一点
|
Android开发
Android笔记:ViewPager和TabLayout连用时,去除ViewPager预加载
Android笔记:ViewPager和TabLayout连用时,去除ViewPager预加载
193 0
fragment嵌套viewpager不显示
fragment嵌套viewpager不显示
189 0
ViewPager(通过反射修改viewpager切换速度)
(创建于2016/11/17) import java.lang.reflect.Field; import android.content.
1120 0
简单几行代码让ViewPager实现垂直滑动效果
近几日有网友在群里提问:有没有大神做过ViewPager实现垂直滑动效果。其实这个问题实现很简单,下面就简单的讲一下实现步骤: 先来看一张效果图:(你会发现,切换ViewPager慢一些,会看到颜色过渡效果,so beautiful) 垂直ViewPager演示 一、首先写一个类继承ViewPager,在构造方法里面设置viewpage的切换动画,然后重写onInterceptTouchEvent,对事件是否处理进行判断。
1651 0