Android 推荐几款好用的开源作品(一)之ViewPager指示器

今天介绍的这款ViewPager指示器叫做,MagicIndicator,一款高扩展性ViewPager指示器,曾经用过ViewPagerIndicator作为指示器,但是后来需求中需要定制,扩展不方便,所以就放弃使用了,然而这款MagicIndicator,扩展极其方便,而且内置指示器也非常多,有图有真相:

                                               


开源地址点击下载,目前开发者只提供了以Module的方式添加到自己的工程中去,具体集成方式如下:

1、下载完成之后,在Studio界面选择Import Module,选择自己下载好的确定OK

                            

2、添加依赖

  1. dependencies {  
  2.     compile project(':magicindicator')  
  3. }  
3、之后就可以在项目中使用了,最近写了一个小项目,就是使用的 MagicIndicator作为ViewPager指示器的,代码如下:

  1. public class CategoryActivity extends BaseActivity {  
  2.   
  3.   
  4.     private ViewPager mPager;  
  5.     private List<String> titles = new ArrayList<String>();  
  6.     private List<Integer> categoryIdList = new ArrayList<Integer>();  
  7.   
  8.     @Override  
  9.     protected void initView() {  
  10.         setContentView(R.layout.activity_viewpager);  
  11.         setBack();  
  12.         setTitle("商品分类");  
  13.         mPager = (ViewPager) findViewById(R.id.view_pager);  
  14.         mPager.setAdapter(mAdapter);  
  15.     }  
  16.   
  17.     @Override  
  18.     protected void initData() {//访问网络,获取数据  
  19.         buildProgressDialog(getString(R.string.loading));  
  20.         webHttpconnection.getValue(Constant.GET_PRODUCT_CATEGORY + SNApplication.getInstance().getUserInfo().getUserId(), 1true);  
  21.     }  
  22.   
  23.     @Override  
  24.     public void requestJsonOnSucceed(String json, int msgFlag) {//网路访问成功回调  
  25.         super.requestJsonOnSucceed(json, msgFlag);  
  26.         if (1 == msgFlag) {  
  27.             Category category = JSON.parseObject(json, Category.class);  
  28.             if (1 == category.getCode() && null != category.getList()) {  
  29.                 List<CategoryEntity> entities = category.getList();  
  30.                 for (int i = 0; i < entities.size(); i++) {  
  31.                     titles.add(entities.get(i).getCategory_name());//接口返回的tab name  
  32.                     categoryIdList.add(entities.get(i).getId());//接口返回的id  
  33.                 }  
  34.                 initMagicUI();  
  35.                 mAdapter.notifyDataSetChanged();  
  36.             }  
  37.         }  
  38.     }  
  39.   
  40.     @Override  
  41.     protected void setOnClickEvent() {  
  42.   
  43.     }  
  44.   
  45.     private void initMagicUI() {  
  46.         final MagicIndicator magicIndicator = (MagicIndicator) findViewById(R.id.magic_indicator);  
  47.         final CommonNavigator commonNavigator = new CommonNavigator(this);  
  48. //        commonNavigator.setEnablePivotScroll(true);//多指示器模式,可以滑动  
  49.         commonNavigator.setAdjustMode(true);  // 自适应模式  
  50.         commonNavigator.setAdapter(new CommonNavigatorAdapter() {  
  51.             @Override  
  52.             public int getCount() {  
  53.                 return titles == null ? 0 : titles.size();  
  54.             }  
  55.   
  56.             @Override  
  57.             public IPagerTitleView getItemView(Context context, final int index) {  
  58.                 ScaleTransitionPagerTitleView colorTransitionPagerTitleView = new ScaleTransitionPagerTitleView(context);  
  59.                 colorTransitionPagerTitleView.setText(titles.get(index));  
  60.                 colorTransitionPagerTitleView.setTextSize(18);  
  61.                 colorTransitionPagerTitleView.setNormalColor(Color.GRAY);  
  62.                 colorTransitionPagerTitleView.setSelectedColor(Color.BLACK);  
  63.                 colorTransitionPagerTitleView.setOnClickListener(new View.OnClickListener() {  
  64.                     @Override  
  65.                     public void onClick(View v) {  
  66.                         mPager.setCurrentItem(index);  
  67.                     }  
  68.                 });  
  69.                 return colorTransitionPagerTitleView;  
  70.             }  
  71.             @Override  
  72.             public IPagerIndicator getIndicator(Context context) {  
  73.                 BezierPagerIndicator indicator = new BezierPagerIndicator(context);  
  74.                 List<String> colorList = new ArrayList<String>();  
  75.                 colorList.add("#ff4a42");  
  76.                 colorList.add("#fcde64");  
  77.                 colorList.add("#73e8f4");  
  78.                 colorList.add("#76b0ff");  
  79.                 colorList.add("#c683fe");  
  80.                 indicator.setColorList(colorList);  
  81.                 return indicator;  
  82.             }  
  83.         });  
  84.         magicIndicator.setNavigator(commonNavigator);  
  85.   
  86.   
  87.         mPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {  
  88.             @Override  
  89.             public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {  
  90.                 magicIndicator.onPageScrolled(position, positionOffset, positionOffsetPixels);  
  91.             }  
  92.   
  93.             @Override  
  94.             public void onPageSelected(int position) {  
  95.                 magicIndicator.onPageSelected(position);  
  96.             }  
  97.   
  98.             @Override  
  99.             public void onPageScrollStateChanged(int state) {  
  100.                 magicIndicator.onPageScrollStateChanged(state);  
  101.             }  
  102.         });  
  103.     }  
  104.   
  105.   
  106.     private FragmentPagerAdapter mAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) {  
  107.         @Override  
  108.         public Fragment getItem(int position) {  
  109.             return MainFragment.newInstance(categoryIdList.get(position));  
  110.         }  
  111.   
  112.         @Override  
  113.         public int getCount() {  
  114.             return titles.size();  
  115.         }  
  116.     };  
  117.   
  118. }  
4、效果图                                                                       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值