ViewPagerIndicator框架的使用(第二部分)

这次将介绍一下ViewPagerIndicator框架的另外两种,这两种使用也是建立在第一中简单圆点提示的上面的。所以没有看过的朋友可以去看看第一部分的内容。

带有String提示的Indicator

第二种介绍的是TabPagerIndicator,这是一种类似于新闻头条一样的上部滑动提示条。如:


这种样式在实现某些新闻资讯类的app是会比较好用。

这种的使用方法基本跟第一种方法一致。

也需要有

MainActivity(extends ActivityFragment)

TabFragmentPagerAdapter(extends FragmentPagerAdapter)

TabFragment(extends Fragment)

这三个主要的类

ViewPager.setAdapter(TabFragmentPagerAdapter);//这个是Viewpager设置适配器

Indicator.setViewPager(viewPager);//这是设置Indicator与viewpager关联

布局文件和之前基本一样,现在就是换成了TabPagerIndicator。

MainActivity的写法跟第一种方法一致

唯一的区别是TabFragmentPagerAdapter中出了需要重写getItem()方法和getConut()方法。还需要重写getPagerTitle()方法

getPagerTitle方法用来回调,为Indicator显示Fragment的标示名。

packagecom.example.testtabpager;
 
importandroid.support.v4.app.Fragment;
importandroid.support.v4.app.FragmentManager;
importandroid.support.v4.app.FragmentPagerAdapter;
 
public classTestFragmentPagerAdapter extendsFragmentPagerAdapter{
 
   publicTestFragmentPagerAdapter(FragmentManager fm) {
      super(fm);
   }
 
   @Override
   public Fragment getItem(int position){
      returnTestFragment.newInstance(Const.TABS[position]);
   }
 
   @Override
   public intgetCount() {
      return Const.TABS.length;
   }
 
   //回调显示Fragment的标示名
   @Override
   public CharSequencegetPageTitle(int position) {
      return Const.TABS[position];
   }
  
}


带有图片的Indicator

如果只是简单的在图片作为标识,只需要添加在FragmentPagerAdapter重写的时候添加一个接口IconPagerAdapter,并且重写getIconResId(int position)方法,从这个名字就可以看出是来回调以显示Fragment的标识图片的。并且提供一个数组存放每个图片选中和普通的状态资源文件。

packagecom.viewpagerindicator.sample;
 
importandroid.support.v4.app.Fragment;
importandroid.support.v4.app.FragmentManager;
importandroid.support.v4.app.FragmentPagerAdapter;
importcom.viewpagerindicator.IconPagerAdapter;
 
classTestFragmentAdapter extends FragmentPagerAdapter implements IconPagerAdapter {
    protected static final String[] CONTENT =new String[] { "This", "Is", "A","Test", };
    protected static final int[] ICONS = newint[] {
            R.drawable.perm_group_calendar,
            R.drawable.perm_group_camera,
           R.drawable.perm_group_device_alarms,
            R.drawable.perm_group_location
    };
 
    private int mCount = CONTENT.length;
 
    public TestFragmentAdapter(FragmentManagerfm) {
        super(fm);
    }
 
    @Override
    public Fragment getItem(int position) {
        returnTestFragment.newInstance(CONTENT[position % CONTENT.length]);
    }
 
    @Override
    public int getCount() {
        return mCount;
    }
 
    @Override
    public CharSequence getPageTitle(intposition) {
      returnTestFragmentAdapter.CONTENT[position % CONTENT.length];
    }
 
    @Override
    public int getIconResId(int index) {
      return ICONS[index % ICONS.length];
    }
 
    public void setCount(int count) {
        if (count > 0 && count <=10) {
            mCount = count;
            notifyDataSetChanged();
        }
    }
}


 

需要在drawable中写出xml的配置文件,

例如:

<?xml version="1.0" encoding="utf-8"?>
 
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true" android:drawable="@drawable/perm_group_calendar_selected"/>
    <item android:drawable="@drawable/perm_group_calendar_normal"/>
</selector>


 

如果是不仅有文字还有图片两种标识的Tab,在重写FragmentPagerAdapter的时候需要实现IconPagerAdapter并重写getPagerTitle和getIconResId两个方法。

classGoogleMusicAdapter extends FragmentPagerAdapterimplements IconPagerAdapter {
        publicGoogleMusicAdapter(FragmentManager fm) {
            super(fm);
        }
 
        @Override
        public FragmentgetItem(int position) {
            returnTestFragment.newInstance(CONTENT[position % CONTENT.length]);
        }
 
        @Override
        publicCharSequence getPageTitle(int position) {
            return CONTENT[position% CONTENT.length].toUpperCase();
        }
 
        @Override public intgetIconResId(int index) {
          return ICONS[index];
        }
 
      @Override
        public intgetCount() {
          return CONTENT.length;
        }
    }


总结:以上就是ViewPagerIndic第三方控件的几种使用方法。可以看到主界面FragmentActivity和Fragment练习起来的桥梁是FragmentPagerAdapter。通过添加重写FragmentPagerAdapter中的方法,为Indicator提供不同的回调方法,从而获得布局的各种参数然后得到我们想要的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值