ViewPageIndicator + ViewPager + Fragment实现类似网易新闻客户端Tab标签(一)

2015-01-27 06:20:35 · 作者: · 浏览: 23

最近生病,脑子不太清楚,今天一哥们问我一个问题,也没搞明白他在问什么,后来明白之后我还以为脑子烧坏了呢,记下问题所在,共分享

这哥们看着夏神的博客写的,附上地址:http://blog.csdn.net/xiaanming/article/details/10766053,他想使用大神博客中说的ViewPageIndicator框架,但是大神继承的是FragmentActivity,这哥们的继承自Fragment,可能是不太明白,具体他的问题出现在哪里,我没有他的代码,我也不清楚

开始正题:

1,要想使用ViewPageIndicator框架,需要先从github上下载源码,源码地址:https://github.com/JakeWharton/Android-ViewPagerIndicator,把library引入项目中

2.由于这哥们需要的是继承fragment的,所以就按照他的需求写的demo

翠花不上菜,只上代码:

package com.sdufe.thea.guo;

import com.sdufe.thea.guo.fragment.IndexFragment;

import android.os.Bundle;
import android.app.Activity;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
import android.view.Window;
import android.widget.LinearLayout;

public class MainActivity extends FragmentActivity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.activity_main);

		getSupportFragmentManager().beginTransaction()
				.add(R.id.ll, new IndexFragment()).commit();
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}
上面的代码就是在activity里面放入一个fragment,很简单啦,就不解释了.

下面主要就是对于框架的使用了:

package com.sdufe.thea.guo.fragment;

import com.sdufe.thea.guo.R;
import com.sdufe.thea.guo.adapter.TabPageIndicatorAdapter;
import com.viewpagerindicator.TabPageIndicator;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

public class IndexFragment extends Fragment {

	private static String[] title = { "呵呵", "哈哈", "嘿嘿", "嗷嗷" };
	private ViewPager viewPager;
	private TabPageIndicator indicator;
	private TabPageIndicatorAdapter adapter;

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		View view = inflater.inflate(R.layout.fragment_index, null);
		viewPager = (ViewPager) view.findViewById(R.id.pager);
		indicator = (TabPageIndicator) view.findViewById(R.id.indicator);
		adapter = new TabPageIndicatorAdapter(getFragmentManager(), title);

		viewPager.setAdapter(adapter);
		indicator.setViewPager(viewPager);

		indicator.setOnPageChangeListener(new OnPageChangeListener() {

			@Override
			public void onPageSelected(int arg0) {
				Toast.makeText(getActivity(), title[arg0], Toast.LENGTH_LONG)
						.show();
			}

			@Override
			public void onPageScrolled(int arg0, float arg1, int arg2) {

			}

			@Override
			public void onPageScrollStateChanged(int arg0) {

			}
		});
		return view;
	}
}
用起来很简单,毕竟都是大神们写的框架,方便我们小菜们使用,主要思路就是初始化viewPager和TabPageIndicator,给viewpager设置适配器.TabPageIndicator跟随viewPager一起滑动,顺便为其设置监听

下面贴一下适配器的代码:

package com.sdufe.thea.guo.adapter;

import com.sdufe.thea.guo.fragment.ItemFragment;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import an