MagicInditor简要介绍,千变万化的控件

    见到这个动画是不是有点心动,想必你和我当初刚看到这个动画的时间的感觉是一样的,激动啊,不用自己写代码来控制滑动还有选中扩大和颜色变化了,并且还有这么多动画效果。现在,我来做一次搬运工,来介绍一下这个非常好用的空间MagicInditor.

    首先先上GitHub地址 https://github.com/hackware1993/MagicIndicator

    这是依赖的方式,两种选其中一种,当然我是推荐第二种的啦,用Android Studio的人都知道

dependencies {
    compile project(':magicindicator')
}
repositories {
    ...
    maven {
        url "https://jitpack.io"
    }
}

dependencies {
    ...
    compile 'com.github.hackware1993:MagicIndicator:1.5.0'
}

导入成功后,就可以使用啦。你需要先在布局文件里引入 MagicIndicator

 

再在代码里面找到它,并进行简单设置:

final MagicIndicator magicIndicator = (MagicIndicator) findViewById(R.id.magic_indicator);
final CommonNavigator commonNavigator = new CommonNavigator(this);
commonNavigator.setAdapter(new CommonNavigatorAdapter() {

    @Override
    public int getCount() {
        return mDataList == null ? 0 : mDataList.size();
    }

    @Override
    public IPagerTitleView getItemView(Context context, final int index) {
        ClipPagerTitleView clipPagerTitleView = new ClipPagerTitleView(context);

        clipPagerTitleView.setText(mDataList.get(index));
        clipPagerTitleView.setTextColor(Color.parseColor("#f2c4c4"));
        clipPagerTitleView.setClipColor(Color.WHITE);

        clipPagerTitleView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mPager.setCurrentItem(index);
            }
        });

        return clipPagerTitleView;
    }

    @Override
    public IPagerIndicator getIndicator(Context context) {
        return null;    // 没有指示器,因为title的指示作用已经很明显了
    }
});
magicIndicator.setNavigator(commonNavigator);

这样,你就可以轻松的实现效果图中 今日头条 式(效果图中第一个)切换效果。

额,上面这代码明显没有和 ViewPager 相关联,因此滑动 ViewPager 时是看不到切换效果的,我们给 ViewPager 添加一个监听器:

mPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {

    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        magicIndicator.onPageScrolled(position, positionOffset, positionOffsetPixels);
    }

    @Override
    public void onPageSelected(int position) {
        magicIndicator.onPageSelected(position);
    }

    @Override
    public void onPageScrollStateChanged(int state) {
        magicIndicator.onPageScrollStateChanged(state);
    }
});

mPager.setCurrentItem(1);

MagicIndicator can be easily extended:

  1. implement IPagerTitleView to customize tab:
public class MyPagerTitleView extends View implements IPagerTitleView {

    public MyPagerTitleView(Context context) {
        super(context);
    }

    @Override
    public void onLeave(int index, int totalCount, float leavePercent, boolean leftToRight) {
    }

    @Override
    public void onEnter(int index, int totalCount, float enterPercent, boolean leftToRight) {
    }

    @Override
    public void onSelected(int index, int totalCount) {
    }

    @Override
    public void onDeselected(int index, int totalCount) {
    }
}
  1. implement IPagerIndicator to customize indicator:
public class MyPagerIndicator extends View implements IPagerIndicator {

    public MyPagerIndicator(Context context) {
        super(context);
    }

    @Override
    public void onPageSelected(int position) {
    }

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

    @Override
    public void onPageScrollStateChanged(int state) {
    }

    @Override
    public void onPositionDataProvide(List<PositionData> dataList) {
    }
}

    上面是在GItHub上摘抄的扩展方式,可以看出这个控件的课操控性是非常强的,能满足大部分产品经理的需求了。

由于本人比较懒,这篇文章的代码是摘抄于https://www.jianshu.com/p/2865812fed41中的,主要是让大家知道这个那么好用的控件而已,纯属搬运工

转载于:https://my.oschina.net/u/3729396/blog/1606932

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值