您的位置:首页 > 移动开发 > Android开发

Android基础之Fragment Viewpager篇

2016-09-19 00:42 197 查看

本例使用Android Studio进行开发

*展示效果如图:



对于所有的Viewpager控件的使用基本根据以下操作作为模板

初始化viewpager控件

添加数据

Viewpager设置监听事件

viewapager设置adapter

Adapter文件MyFragmentPagerAdapter.java(能够自动删除Fragment元素,避免Frament栈过多导致程序崩溃)

public class MyFragmentPagerAdapter extends FragmentStatePagerAdapter {

private List fragList;
public MyFragmentPagerAdapter(FragmentManager fm, List fragList) {
super(fm);
// TODO Auto-generated constructor stub
this.fragList=fragList;
}

@Override
public Fragment getItem(int arg0) {
// TODO Auto-generated method stub
return fragList.get(arg0);
}

@Override
public int getCount() {
// TODO Auto-generated method stub
return fragList.size();
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
super.destroyItem(container, position, object);
}

@Override
public Object instantiateItem(ViewGroup arg0, int arg1) {
// TODO Auto-generated method stub
return super.instantiateItem(arg0, arg1);
}

}


*__MainActivity__

public class MainActivity extends AppCompatActivity implements View.OnClickListener, ViewPager.OnPageChangeListener{

private List fragList;
private ViewPager pager;
//使用layout控制底部栏在于提高用户体验,便于点击
private RelativeLayout bottom_menu_one_Layout,bottom_menu_two_Layout,bottom_menu_three_Layout;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init_layout();
init_fragmentViewpager();
}

//设置底部按钮点击事件
public void init_layout(){
/*
* 初始化底部按钮控件所在的布局
* */
bottom_menu_one_Layout=(RelativeLayout)findViewById(R.id.bottom_menu_one_Layout);
bottom_menu_two_Layout=(RelativeLayout)findViewById(R.id.bottom_menu_two_Layout);
bottom_menu_three_Layout=(RelativeLayout)findViewById(R.id.bottom_menu_three_Layout);
/*
* 底部菜单栏设置点击事件
* */
bottom_menu_one_Layout.setOnClickListener(this);
bottom_menu_two_Layout.setOnClickListener(this);
bottom_menu_three_Layout.setOnClickListener(this);
}

//设置点击事件
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.bottom_menu_one_Layout:
pager.setCurrentItem(0);
break;
case R.id.bottom_menu_two_Layout:
pager.setCurrentItem(1);
break;
case R.id.bottom_menu_three_Layout:
pager.setCurrentItem(2);
break;
}
}

//设置Viewpager
public void init_fragmentViewpager(){
/*
* 初始化viewpager控件
* */
pager=(ViewPager) findViewById(R.id.main_viewpager);
fragList=new ArrayList();
/*
* 为fragmentViewpagerList添加fragment
* */
fragList.add(new Fragment1());
fragList.add(new Fragment2());
fragList.add(new Fragment3());
/*
* 添加Viewpager滑动监听事件
* */
pager.setOnPageChangeListener(this);
/*
* viewapager设置adapter
* */
MyFragmentPagerAdapter adapter=new MyFragmentPagerAdapter(getSupportFragmentManager(),fragList);
pager.setAdapter(adapter);
}

//Viewpager重写方法
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
//翻页时事件
}

@Override
public void onPageSelected(int position) {
//该方法为当前选定页面事件
}

@Override
public void onPageScrollStateChanged(int state) {
//该方法为翻页状态变化事件
}


*__activity_main.xml核心部分__

<RelativeLayout
android:id="@+id/content_layout"
android:layout_marginBottom="48dp"
android:layout_width="match_parent"
android:layout_height="wrap_content">

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

</RelativeLayout>

<fragment
android:id="@+id/menu_fragment"
android:layout_width="match_parent"
android:layout_height="55dp"
android:name="com.example.boy.viewpager_demo.Button_menu_Fragment"
tools:layout="@layout/bottom_menu"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"></fragment>


*ps:在Android Studio中使用Fragment做组件必须添加android:name属性

完整demo地址:http://download.csdn.net/detail/enough_empty/9633256
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息