热烈欢迎大家来纠正
,提问
,交流
!!!
我们通常实现页面左右滑动,往往单独运用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);
}
}
完毕!
热烈欢迎大家来纠正
,提问
,交流
!!!
本文详细介绍如何结合使用Fragment和ViewPager实现页面左右滑动效果。通过创建多个Fragment并利用ViewPager进行切换,实现流畅的用户体验。

691

被折叠的 条评论
为什么被折叠?



