其实,如果不是要内容区域左右滑动的效果,用Fragment就可以了,完全没必要在用Viewpager+Fragment结合,如果仅用Fragment的话,就先绑定好几个layout布局到class,然后在底部按钮的点击事件中,添加Fragment事物,显示哪一个Fragment就show(),OK
下面是Fragment+Viewpager
1:要准备几个相应的layout布局
2:绑定layout布局
3:Activity中的代码,当然xml里要写一下布局
v4的包,一定要记住
底下是代码:
package com.example.viewpagerandfragment.Activity;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import com.example.viewpagerandfragment.R;
import com.example.viewpagerandfragment.fragment.fmainFragmentfour;
import com.example.viewpagerandfragment.fragment.fmainFragmentthree;
import com.example.viewpagerandfragment.fragment.fmainFragmenttwo;
import com.example.viewpagerandfragment.fragment.mainFragmentone;
public class MainActivity extends FragmentActivity implements
View.OnClickListener {
private ViewPager Mviewpager;
private LinearLayout layoutone, layouttwo, layoutthree, layoutfour;
private ImageView i01, i02, i03, i04;
// fragment+viewpager用这个适配器
private FragmentPagerAdapter adapter;
private List<Fragment> mLists = new ArrayList<Fragment>();
private Fragment fr01, fr02, fr03, fr04;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initEvent();
}
/**
* 控件的点击事件方法
*/
private void initEvent() {
// TODO Auto-generated method stub
layoutfour.setOnClickListener(this);
layoutone.setOnClickListener(this);
layoutthree.setOnClickListener(this);
layouttwo.setOnClickListener(this);
}
private void initView() {
// TODO Auto-generated method stub
Mviewpager = (ViewPager) findViewById(R.id.id_mainviewpager);
layoutone = getView(R.id.id_mainbuttom_one);
layoutfour = getView(R.id.id_mainbuttom_four);
layoutthree = getView(R.id.id_mainbuttom_three);
layouttwo = getView(R.id.id_mainbuttom_two);
i01 = getView(R.id.id_mainbutton_oneim);
i02 = getView(R.id.id_mainbutton_twoim);
i03 = getView(R.id.id_mainbutton_threeim);
i04 = getView(R.id.id_mainbutton_fourim);
// 实例化fragment
fr01 = new mainFragmentone();
fr02 = new fmainFragmenttwo();
fr03 = new fmainFragmentthree();
fr04 = new fmainFragmentfour();
// 把fragment放到集合中,以适配到viewpager上
mLists.add(fr01);
mLists.add(fr02);
mLists.add(fr03);
mLists.add(fr04);
// 内部类适配器
adapter = new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public int getCount() {
// TODO Auto-generated method stub
return mLists.size();
}
@Override
public Fragment getItem(int arg0) {
// TODO Auto-generated method stub
return mLists.get(arg0);
}
};
// 给控件设置适配器
Mviewpager.setAdapter(adapter);
// viewpager页面切换监听
Mviewpager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
// 取出当前显示的viewpager页面
int currentItem = Mviewpager.getCurrentItem();
setSelet(currentItem);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
}
@Override
public void onClick(View arg0) {
switch (arg0.getId()) {
case R.id.id_mainbuttom_one:
setSelet(0);
break;
case R.id.id_mainbuttom_two:
setSelet(1);
break;
case R.id.id_mainbuttom_three:
setSelet(2);
break;
case R.id.id_mainbuttom_four:
setSelet(3);
break;
default:
break;
}
}
/**
* 设置图片变色,和fragment内容的切换
*
* @param i
*/
private void setSelet(int i) {
// TODO Auto-generated method stub
qieImage();
switch (i) {
case 0:
i01.setImageResource(R.drawable.weixinone);
// 设置viewpager显示的页面属性,viewpager默认第一页为0页
Mviewpager.setCurrentItem(0);
break;
case 1:
i02.setImageResource(R.drawable.tongxueone);
Mviewpager.setCurrentItem(1);
break;
case 2:
i03.setImageResource(R.drawable.faxianone);
Mviewpager.setCurrentItem(2);
break;
case 3:
i04.setImageResource(R.drawable.woone);
Mviewpager.setCurrentItem(3);
break;
default:
break;
}
}
/**
* 初始都设置成暗色的图片
*/
private void qieImage() {
// TODO Auto-generated method stub
i01.setImageResource(R.drawable.weixintwo);
i02.setImageResource(R.drawable.tongxuetwo);
i03.setImageResource(R.drawable.faxiantwo);
i04.setImageResource(R.drawable.wotwo);
}
/**
* 绑定控件Id的方法
*
* @param ViewId
* @return
*/
private <T extends View> T getView(int ViewId) {
View v = findViewById(ViewId);
return (T) v;
}
注:上边有一个绑定Id的方法,因为基本上控件都是继承自View,所以写一个泛型为T的继承View的方法,传View的Id为参数,这样就不会每一个控件都写一遍FindViewById()了;
点击下载Dome全部代码和资源
http://download.csdn.net/detail/jiajia1112223/9438184