Android 推荐几款好用的开源作品(一)之ViewPager指示器
2016-07-10 14:32
1561 查看
今天介绍的这款ViewPager指示器叫做,MagicIndicator,一款高扩展性ViewPager指示器,曾经用过ViewPagerIndicator作为指示器,但是后来需求中需要定制,扩展不方便,所以就放弃使用了,然而这款MagicIndicator,扩展极其方便,而且内置指示器也非常多,有图有真相:
开源地址点击下载,目前开发者只提供了以Module的方式添加到自己的工程中去,具体集成方式如下:
1、下载完成之后,在Studio界面选择Import Module,选择自己下载好的确定OK
2、添加依赖
开源地址点击下载,目前开发者只提供了以Module的方式添加到自己的工程中去,具体集成方式如下:
1、下载完成之后,在Studio界面选择Import Module,选择自己下载好的确定OK
2、添加依赖
dependencies { compile project(':magicindicator') }3、之后就可以在项目中使用了,最近写了一个小项目,就是使用的MagicIndicator作为ViewPager指示器的,代码如下:
public class CategoryActivity extends BaseActivity { private ViewPager mPager; private List<String> titles = new ArrayList<String>(); private List<Integer> categoryIdList = new ArrayList<Integer>(); @Override protected void initView() { setContentView(R.layout.activity_viewpager); setBack(); setTitle("商品分类"); mPager = (ViewPager) findViewById(R.id.view_pager); mPager.setAdapter(mAdapter); } @Override protected void initData() {//访问网络,获取数据 buildProgressDialog(getString(R.string.loading)); webHttpconnection.getValue(Constant.GET_PRODUCT_CATEGORY + SNApplication.getInstance().getUserInfo().getUserId(), 1, true); } @Override public void requestJsonOnSucceed(String json, int msgFlag) {//网路访问成功回调 super.requestJsonOnSucceed(json, msgFlag); if (1 == msgFlag) { Category category = JSON.parseObject(json, Category.class); if (1 == category.getCode() && null != category.getList()) { List<CategoryEntity> entities = category.getList(); for (int i = 0; i < entities.size(); i++) { titles.add(entities.get(i).getCategory_name());//接口返回的tab name categoryIdList.add(entities.get(i).getId());//接口返回的id } initMagicUI(); mAdapter.notifyDataSetChanged(); } } } @Override protected void setOnClickEvent() { } private void initMagicUI() { final MagicIndicator magicIndicator = (MagicIndicator) findViewById(R.id.magic_indicator); final CommonNavigator commonNavigator = new CommonNavigator(this); // commonNavigator.setEnablePivotScroll(true);//多指示器模式,可以滑动 commonNavigator.setAdjustMode(true); // 自适应模式 commonNavigator.setAdapter(new CommonNavigatorAdapter() { @Override public int getCount() { return titles == null ? 0 : titles.size(); } @Override public IPagerTitleView getItemView(Context context, final int index) { ScaleTransitionPagerTitleView colorTransitionPagerTitleView = new ScaleTransitionPagerTitleView(context); colorTransitionPagerTitleView.setText(titles.get(index)); colorTransitionPagerTitleView.setTextSize(18); colorTransitionPagerTitleView.setNormalColor(Color.GRAY); colorTransitionPagerTitleView.setSelectedColor(Color.BLACK); colorTransitionPagerTitleView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mPager.setCurrentItem(index); } }); return colorTransitionPagerTitleView; } @Override public IPagerIndicator getIndicator(Context context) { BezierPagerIndicator indicator = new BezierPagerIndicator(context); List<String> colorList = new ArrayList<String>(); colorList.add("#ff4a42"); colorList.add("#fcde64"); colorList.add("#73e8f4"); colorList.add("#76b0ff"); colorList.add("#c683fe"); indicator.setColorList(colorList); return indicator; } }); magicIndicator.setNavigator(commonNavigator); 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); } }); } private FragmentPagerAdapter mAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) { @Override public Fragment getItem(int position) { return MainFragment.newInstance(categoryIdList.get(position)); } @Override public int getCount() { return titles.size(); } }; }4、效果图
相关文章推荐
- Android adapter 中动态设置控件的方法
- Android之JSON解析
- android 自定义View (5) 音量控制
- android ant 打包,不能打出apk:Library project: do not create apk...
- Android多媒体之MediaPlayerService
- Android中关于传递对象的俩种用法,也就是Serializable和Parcelable的使用
- Android开发学习之路-RecyclerView滑动删除和拖动排序
- Android Netd
- android toolbar收缩的实现{局限性非常强}
- EventBus
- Android之Pull解析XML文件
- Android中关于系统Intent的一些应用的说明
- Imooc---Android工程师
- Android 关于android:foreground设置无效的问题
- Android Bander设计与实现 - 设计篇
- 从零开始开发一个Android项目的一般步骤
- Cordova自定义插件实战
- Android开发之Error when loading the SDK
- 自定义控件(二) 一个圆形钟表
- ADT发生异常错误笔记