您的位置:首页 > 其它

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

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

这个小项目用到了两个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);
}

}
目前就这些了,本人当前是个菜鸟,还请各位大神对对指点!!!三克油
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: