千变万化的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);


相关文章
|
网络安全
charles抓包显示乱码解决方法
【问题现象】 在抓https协议请求时,Request和Response显示乱码了: 【解决办法】 第一步:点击 【工具栏-->Proxy-->SSL Proxying Settings...】   第二点:添加需求抓包的请求的域名和端口号:   重新抓包,Request显示正常:   PS: 问题解决起来并没有太复杂,不过在网上搜索的资料试过很多都没有起做用,遂在此做个记录。
10445 0
|
Java 数据安全/隐私保护 Android开发
如何查看签名后的jks文件信息(查看应用签名)
如何查看签名后的jks文件信息(查看应用签名)
4596 0
如何查看签名后的jks文件信息(查看应用签名)
|
开发工具 git
最好的 Git 动画教程,没有之一
介绍 Git 动画教程的学习方法。
最好的 Git 动画教程,没有之一
|
消息中间件 缓存 架构师
2024年阿里Android高级面试题分享,附学习笔记+面试整理+进阶书籍
2024年阿里Android高级面试题分享,附学习笔记+面试整理+进阶书籍
|
存储 监控 数据库
Android经典实战之OkDownload的文件分段下载及合成原理
本文介绍了 OkDownload,一个高效的 Android 下载引擎,支持多线程下载、断点续传等功能。文章详细描述了文件分段下载及合成原理,包括任务创建、断点续传、并行下载等步骤,并展示了如何通过多种机制保证下载的稳定性和完整性。
575 1
|
开发工具 数据库 git
通俗易懂!看漫画学Python入门教程(全彩版)Git首发破万Star
很多编程语言书读起来都略显晦涩,让不少读者望而却步,很难坚持读完。关老师的新书另辟蹊径,以漫画形式切入,生动有趣,把复杂的技术点和编程知识讲解得通俗易懂真正体现了一图胜干言的道理。而且每章结束时都有“练一练”环节,能够帮助读者夯实基础、锻炼技能。不得不说,这是一本Python入门和进阶佳作。
|
XML Java API
Android原生TabLayout使用全解析,看这篇就够了
Android原生TabLayout使用全解析,看这篇就够了
2483 0
Android原生TabLayout使用全解析,看这篇就够了
|
设计模式 Oracle 关系型数据库
二十三种设计模式全面解析-适配器模式的妙用:异构数据库和不同版本API的完美兼容!
二十三种设计模式全面解析-适配器模式的妙用:异构数据库和不同版本API的完美兼容!
301 0
|
JavaScript 前端开发 Android开发
Android AgentWeb WebView 与js交互总结
Android AgentWeb WebView 与js交互总结
688 0
|
Java API 开发工具
KIRO(Knowledge, Insights, and Relationships Ontology)
KIRO(Knowledge, Insights, and Relationships Ontology)是一个由微软提供的开源知识图谱平台,用于构建、管理和查询知识图谱。
625 3