初学者通过Fragment和viewPager实现页面左右滑动

本文详细介绍如何结合使用Fragment和ViewPager实现页面左右滑动效果。通过创建多个Fragment并利用ViewPager进行切换,实现流畅的用户体验。

热烈欢迎大家来纠正敲打,提问疑问,交流抓狂!!!

我们通常实现页面左右滑动,往往单独运用Fragment(碎片)实现;下面介绍另一种更方便方法,Fragment和viewPager结合使用

具体实现效果模拟:三个页面A,B,C相互滑动

整体思路:

1.准备工作:

首先在MainActivity的xml文件中添加<android.support.v4.view.viewPager (id)(宽)(高)  />标签, MainActivity绑定Id;

新建三个xml,分别命名为a,b,c;新建三个.java文件分别命名为A,B,C,且绑定对应的a,b,c,xml布局;

详细步骤:新建类A继承Fragment,重写onCreateView方法,通过inflater.inflate()绑定a布局,最后return view;)

注意:在此应导入含v4的Fragment包,而不是android.app.Fragment包;

2.在MainActivity中创建A,B,C三个对象,然后创建泛型为Fragment的List容器,然后通过.add()方法将三个对象添加进容器。

3.创建适配器:

新建类MyPagerAdapter继承FragmentPagerAdapter,定义两个全局变量FragrementManager和List<Fragment>,实现含两个全局变量形参的MyPagerAdapter,通过this.传值。

最后添加getItem()和getCount()方法,对应通过.get()和.size()得到数据,return数据。

4.在MainActivity中实例化适配器,填入实参getSupportFragmentManager(),list;最后通过setAdapter绑定适配器。

注意:若使用eclipse编码,getSupportFragmentManager()会报错?

解决:让MainActivity继承FragmentActivity就可以了。


好,下面开始编码:关键代码如下:

MainActivity的xml

<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"
    tools:context=".MainActivity" >

    <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>

其中的一个Fragment

package com.example.Myfragment;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.example.fragmentdemo.R;

public class FragmentA extends Fragment {
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		View view = inflater.inflate(R.layout.fragment_a, null);
		return view;
		//return super.onCreateView(inflater, container, savedInstanceState);
	}

}

适配器

package com.example.fragmentAdapter;

import java.util.List;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

public class MyPagerAdapter extends FragmentPagerAdapter {
	private FragmentManager fm;
	private List<Fragment> list;

	public MyPagerAdapter(FragmentManager fm, List<Fragment> list) {
		super(fm);
		this.fm = fm;
		this.list = list;
	}

	@Override
	public Fragment getItem(int arg0) {
		return list.get(arg0);
	}

	@Override
	public int getCount() {
		return list.size();
	}

}

MainActivity.java

package com.example.fragmentdemo;

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.view.ViewPager;

import com.example.Myfragment.FragmentA;
import com.example.Myfragment.FragmentB;
import com.example.Myfragment.FragmentC;
import com.example.fragmentAdapter.MyPagerAdapter;


public class MainActivity extends FragmentActivity {
	private Fragment fragmentA;
	private Fragment fragmentB;
	private Fragment fragmentC;
	private ViewPager viewPager;
	private List<Fragment> fragmentList;
	private MyPagerAdapter adapter;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		bindId();
		initFragment();
		adapter = new MyPagerAdapter(getSupportFragmentManager(), fragmentList);
		viewPager.setAdapter(adapter);
	}

	private void bindId() {
		viewPager = (ViewPager) findViewById(R.id.viewPager);

	}

	private void initFragment() {
		fragmentList = new ArrayList<Fragment>();
		fragmentA = new FragmentA();
		fragmentB = new FragmentB();
		fragmentC = new FragmentC();
		fragmentList.add(fragmentA);
		fragmentList.add(fragmentB);
		fragmentList.add(fragmentC);

	}
}
完毕!

                                                        热烈欢迎大家来纠正敲打,提问疑问,交流抓狂!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值