fragment+ViewPager的使用(页面的滑动切换)

来源:互联网 发布:如何优化伊春发展环境 编辑:程序博客网 时间:2024/05/21 18:11

本人写的效果是这样的,它可以点击底部的两个按钮来切换,也可以左右滑动来切换,每个页面可以有独立的布局及响应

这个小项目用到了两个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;@Overrideprotected 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);}//获取当前界面@Overridepublic Fragment getItem(int arg0) {// TODO Auto-generated method stubreturn mFg.get(arg0);}//ViewPager的界面总数@Overridepublic int getCount() {return mFg.size();}}private void __setViewPagerListener() {mRtLink.setSelected(true);//默认界面是连接//滑动时底部的按钮跟着动mViewPager.addOnPageChangeListener(new OnPageChangeListener() {@Overridepublic void onPageSelected(int arg0) {switch (arg0) {case R.id.bt1:mRtLink.setChecked(true);break;case R.id.bt2:mRtShow.setChecked(true);break;default:break;}}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}@Overridepublic 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{@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stubreturn 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{@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stubreturn inflater.inflate(R.layout.fragment02,null);}}
目前就这些了,本人当前是个菜鸟,还请各位大神对对指点!!!三克油





    

1 0
原创粉丝点击