1.首先要写好布局文件,一个是包含viewPager的,其它的用来显示ViewPager中的内容,在最初实验期间可以简单放一个文本就行
包含viewPager的布局文件
......
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</android.support.v4.view.ViewPager>
2.写class文件加载ViewPager的内容,这里给出一个示例:
public class Fragment1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle bundle) {
return findView(inflater, container, bundle, R.layout.fragment1);
}
private View findView(LayoutInflater inflater, ViewGroup container,
Bundle bundle, int layoutResourceId) {
View layout = inflater.inflate(layoutResourceId, container, false);
return layout;
}
}
3.在主方法中实现ActionBar和ViewPager的交互
public class MainActivity1 extends FragmentActivity implements
ActionBar.TabListener, OnPageChangeListener {
// 定义显示的页面
private Fragment1 mFragment1 = new Fragment1();
private Fragment2 mFragment2 = new Fragment2();
private Fragment3 mFragment3 = new Fragment3();
// 显示页面的个数
private static final int TAB_INDEX_COUNT = 3;
private static final int TAB_INDEX_ONE = 0;
private static final int TAB_INDEX_TWO = 1;
private static final int TAB_INDEX_THREE = 2;
private ViewPager mViewPager;
private ViewPagerAdapter mViewPagerAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setUpActionBar();
setUpViewPager();
setUpTabs();
}
private void setUpActionBar() {
final ActionBar actionBar = getActionBar();
actionBar.setHomeButtonEnabled(false);//
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);// 设置为导航模式
actionBar.setDisplayShowTitleEnabled(false);// 设置不显示title
actionBar.setDisplayShowHomeEnabled(false);//
}
private void setUpViewPager() {
mViewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager);// 获得ViewPager组件
mViewPager.setAdapter(mViewPagerAdapter);
mViewPager.setOnPageChangeListener(this);
}
private void setUpTabs() {
final ActionBar actionBar = getActionBar();
for (int i = 0; i < mViewPagerAdapter.getCount(); ++i) {
actionBar.addTab(actionBar.newTab()
.setText(mViewPagerAdapter.getPageTitle(i))
.setTabListener(this));
}
}
@Override
protected void onDestroy() {
super.onDestroy();
}
public class ViewPagerAdapter extends FragmentPagerAdapter {
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case TAB_INDEX_ONE:
return mFragment1;
case TAB_INDEX_TWO:
return mFragment2;
case TAB_INDEX_THREE:
return mFragment3;
}
throw new IllegalStateException("No fragment at position "
+ position);
}
@Override
public int getCount() {
return TAB_INDEX_COUNT;
}
public CharSequence getPageTitle(int position) {
String tabLabel = null;
switch (position) {
case TAB_INDEX_ONE:
tabLabel = getString(R.string.tab_1);
break;
case TAB_INDEX_TWO:
tabLabel = getString(R.string.tab_2);
break;
case TAB_INDEX_THREE:
tabLabel = getString(R.string.tab_3);
break;
}
return tabLabel;
}
}
public void onPageScrollStateChanged(int state) {
switch (state) {
case ViewPager.SCROLL_STATE_IDLE:// 未拖动页面时执行
break;
case ViewPager.SCROLL_STATE_DRAGGING:// 正在拖动页面时执行
break;
case ViewPager.SCROLL_STATE_SETTLING:
break;
default:
break;
}
}
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
public void onPageSelected(int position) {
final ActionBar actionBar = getActionBar();
actionBar.setSelectedNavigationItem(position);
}
public void onTabSelected(Tab tab, android.app.FragmentTransaction ft) {
mViewPager.setCurrentItem(tab.getPosition());
}
public void onTabUnselected(Tab tab, android.app.FragmentTransaction ft) {
}
public void onTabReselected(Tab tab, android.app.FragmentTransaction ft) {
}
}