fragment+ViewPager的使用(页面的滑动切换)
2016-01-20 13:06
309 查看
本人写的效果是这样的,它可以点击底部的两个按钮来切换,也可以左右滑动来切换,每个页面可以有独立的布局及响应
这个小项目用到了两个fragment对象,一个ViewPager(一个是连接的fragment,一个是展示的fragment,大家要是有需要也可以自己在加)
1、布局文件:
Activity.xml
fragment01.xml
fragment02.xml
2,Activity中的代码(注意继承的是FragmentActivity)
3,fragment的类
(1)fragment01类
(2)fragment02类
这个小项目用到了两个fragment对象,一个ViewPager(一个是连接的fragment,一个是展示的fragment,大家要是有需要也可以自己在加)
1、布局文件:
Activity.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" > <android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="match_parent" android:layout_height="wrap_content" > </android.support.v4.view.ViewPager> <RadioGroup android:id="@+id/bottom_control" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:orientation="horizontal" > <RadioButton android:id="@+id/bt1" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:background="@null" android:button="@null" android:checked="true" android:drawableTop="@drawable/daohanglianjie" android:gravity="center" android:onClick="doClick" android:text="连接" /> <RadioButton android:id="@+id/bt2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:button="@null" android:drawableTop="@drawable/zhanshi" android:gravity="center" android:onClick="doClick" android:text="展示" /> </RadioGroup> </RelativeLayout>
fragment01.xml
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="第一个" /> </FrameLayout>
fragment02.xml
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="第二个" /> </FrameLayout>
2,Activity中的代码(注意继承的是FragmentActivity)
package com.example.fragment; import java.util.ArrayList; import java.util.List; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; 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.RadioButton; public class FragmentMainActivity extends FragmentActivity { //底部按鈕的集合 private List<View> mBottom = new ArrayList<View>(); //fragment集合 private ArrayList<Fragment> mFg = null; private RadioButton mRtLink = null; private RadioButton mRtShow = null; private ViewPager mViewPager = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); __init();//初始化界面 __setViewPagerListener();//ViewPager滑动的监听事件 } private void __init() { mViewPager = (ViewPager) findViewById(R.id.vp); mRtLink = (RadioButton) findViewById(R.id.bt1); mRtShow = (RadioButton) findViewById(R.id.bt2); mBottom.add(mRtLink); mBottom.add(mRtShow); mFg = new ArrayList<Fragment>(); mFg.add(new Fragment01()); mFg.add(new Fragment02()); //管理fragment,把fragment加到ViewPager中 FragmentManager fm = getSupportFragmentManager(); MyAdapter adapter = new MyAdapter(fm); mViewPager.setAdapter(adapter); } //ViewPager的适配器 class MyAdapter extends FragmentPagerAdapter{ public MyAdapter(FragmentManager fm) { super(fm); } //获取当前界面 @Override public Fragment getItem(int arg0) { // TODO Auto-generated method stub return mFg.get(arg0); } //ViewPager的界面总数 @Override public int getCount() { return mFg.size(); } } private void __setViewPagerListener() { mRtLink.setSelected(true);//默认界面是连接 //滑动时底部的按钮跟着动 mViewPager.addOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { switch (arg0) { case R.id.bt1: mRtLink.setChecked(true); break; case R.id.bt2: mRtShow.setChecked(true); break; default: break; } } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { } }); } //RadioButton的点击事件 public void doClick(View v) { switch (v.getId()) { case R.id.bt1: mViewPager.setCurrentItem(0); break; default: mViewPager.setCurrentItem(1); break; } } }
3,fragment的类
(1)fragment01类
package com.example.fragment; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class Fragment01 extends Fragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub return inflater.inflate(R.layout.fragment01, container, false); } }
(2)fragment02类
package com.example.fragment; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class Fragment02 extends Fragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub return inflater.inflate(R.layout.fragment02,null); } }目前就这些了,本人当前是个菜鸟,还请各位大神对对指点!!!三克油
相关文章推荐
- Git版本库规范
- 前端的注意事项
- POJ 3100 & ZOJ 2818 & HDU 2740 Root of the Problem(数学)
- Visual Studio 使用及调试必知必会
- Cocos2dx源码分析之JumpBy的实现
- [面试]——用一行代码判断两矩形是否相交
- SQL Server 2016 查询存储(Query Store)示例
- SQL Server 2016 查询存储(Query Store)示例
- apache mina: IoFilterChain 过滤链
- 数据分析:互联网金融数据分析应用
- android 应用内存分析MAT结合LeakCanary的分析OOM异常
- 谁动了我的数字遗产
- Dynamics CRM SQL转化为FetchXML的在线转化工具
- Dynamics CRM SQL转化为FetchXML的在线转化工具
- Dynamics CRM SQL转化为FetchXML的在线转化工具
- Dynamics CRM SQL转化为FetchXML的在线转化工具
- Httpie 进行web请求模拟
- c++网络编程之socket
- 数据分析系列剧第四集:行业研究报告与生产计划
- Android broadcast