viewpager+fragment实现的一个小Demo

其实,如果不是要内容区域左右滑动的效果,用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




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值