ViewPagerIndicator--使用TabPageIndicator实现指针控件

1、所需工具
    (1)第三方开源库文件Android-ViewPagerIndicator-master文件夹下的library
    (2)模仿库文件的示例工程实现:导入Android-ViewPagerIndicator-master文件夹下的Sample工程,导入后的工程名:ListSample,查
看SampleTabsDefault.java文件。

2、具体实现步骤
    (1)将我们的工程关联上库文件,删除工程中的v4包以解决v4包冲突的问题
    (2)SampleTabsDefault.java继承自FragmentActivity,是一个Activity,查看其引用的布局文件,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <com.viewpagerindicator.TabPageIndicator
        android:id="@+id/indicator"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"/>

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>
</LinearLayout>

    其中有一个TabPageIndicator和一个ViewPager,TabPageIndicator指针控件,ViewPager在使用时使用我们自己所需的ViewPager,在我们工程中需要添加TabPageIndicator的Activity布局文件中添加相应代码,ViewPager控件放在TabPageIndicator控件的下方
    (3)在Activity中找到TabPageIndicator和ViewPager对象
    (4)在ViewPager适配器中添加getPageTitle(int position)方法显示TabPageIndicator内容
    (5)给ViewPager对象设置适配器pager.setAdapter(PagerAdapter pagerAdapter)
    (6)使用setViewPager()方法将TabPageIndicator和ViewPager绑定,如:indicator.setViewPager(pager)。绑定操作要放在添加适配器之后执行
    (7)此时运行我们的工程已经能显示TabPageIndicator的内容,但是滑动ViewPager是看不到TabPageIndicator改变的效果,需要给这个Activity设置一个样式。在示例工中AndroidManifest文件中找到对应的Activity,将设置主题的代码复制到我们工程中的AndroidManifest的Activity下,此时就可以看到效果。主题可以更具我们的需要进行修改,以显示出不同的效果。

3、添加TabPageIndicator指针
    (1)在TabPageIndicator的指针集合中添加需要添加的指针内容
    (2)更新:indicator.notifyDataSetChanged();
      ( 3 ) 添加指针对应的ViewPager页
    (4)更新:pager.notifyDataSetChanged();
      (5)添加后直接定位到新添加的页:indicator.setCurrentItem(list.size()-1)

4、例
public class MainActivity extends FragmentActivity {
    private TabPageIndicator indicator;
    private ViewPager pager;
    private ArrayList<String> arrayList;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.simple_tabs);
        
        indicator = (TabPageIndicator) findViewById(R.id.indicator);
        pager = (ViewPager) findViewById(R.id.pager);
        arrayList = new ArrayList<String>();
        
        final String[] CONTENT = new String[] { "Recent", "Artists", "Albums", "Songs", "Playlists", "Genres" };
        for (int i = 0; i < CONTENT.length; i++) {
            arrayList.add(CONTENT[i]);
        }
        
        PagerAdapter pagerAdapter = new PagerAdapter();
        pager.setAdapter(pagerAdapter);
        indicator.setViewPager(pager);
    }
    
    class PagerAdapter extends android.support.v4.view.PagerAdapter{
        
        @Override
        public CharSequence getPageTitle(int position) {
            return arrayList.get(position);
        }
        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return arrayList.size();
        }
        @Override
        public boolean isViewFromObject(View arg0, Object arg1) {
            // TODO Auto-generated method stub
            return arg0 == arg1;
        }
        
        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            TextView textView = new TextView(getApplicationContext());
            textView.setText(arrayList.get(position));
            container.addView(textView);
            return textView;
        }
        
        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView((View)object);
        }  
    }
}  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值