今天我们做个类似于网易新闻客户端的实现,简单来说就是屏幕上面是几个条目,下面是一个ViewPager,当我们切换条目时,
下面的ViewPager就显示对应的信息。
一、这里条目的实现使用的是ActionBar的添加Tab的方法,所以我们在activity_main.xml只需要定义一个ViewPager就可以了
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</android.support.v4.view.ViewPager>
</RelativeLayout>
二、然后是在MainActivity为ActionBar添加Tab,为ViewPager添加Fragment。
package com.example.news;
import java.util.ArrayList;
import java.util.List;
import com.example.adapter.MyPagerAdapter;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.Menu;
/**
* 两个部分: ActionBar:--->获取actionBar对象--->addTab(新的Tab对象)-->添加每个Tab的监听事件
* ViewPager:--->List<Fragment> -->向集合中添加Fragment对象(子类
* MyFragment-->onCreateView-->加载布局)
* --->将数据给PagerAdapter(子类MyPagerAdapter)-->得到适配器之后给ViewPager
* 思考:ViewPager与ActionBar之间的交互
*
* @author Administrator
*
*/
public class MainActivity extends FragmentActivity implements TabListener {
private ViewPager viewPager;
private ActionBar actionBar;
private List<Fragment> lists;
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 创建对象
viewPager = (ViewPager) findViewById(R.id.viewPager);
// 创建ActionBar对象并添加多个Tab
actionBar = getActionBar();
// 设置模式
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// 添加Tab并设置监听事件
actionBar.addTab(actionBar.newTab().setText("头条").setTag("头条")
.setTabListener(this));
actionBar.addTab(actionBar.newTab().setText("国内").setTag("国内")
.setTabListener(this));
actionBar.addTab(actionBar.newTab().setText("社会").setTag("社会")
.setTabListener(this));
// 初始化Fragment集合
initFragment();
// 定义适配器
MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager());
adapter.setLists(lists);
// 给ViewPager设置适配器
viewPager.setAdapter(adapter);
// 给ViewPager设置监听事件
viewPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int