ViewPager:Fragment的转换

来源:互联网 发布:mac 外接显示器 风扇 编辑:程序博客网 时间:2024/05/02 04:31

ViewPager是一个可以实现多个图片、Fragment手指滑动,自动轮播的类。

1.首先要找到ViewPager的类名在Android Private Libraries里找到View包里找到ViewPager.class,复制限定名


2.之后再布局写入ViewPager

<android.support.v4.view.ViewPager
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:id="@+id/vp"/>

3.准备好几个图片和Fragment

图片比较简单,直接加入一个int[]钟;

Fragment比较复杂把几个写好的Fragment加入ArrayList集合里,写好FragmentStatePagerAdapter适配器类:

public class fragment extends FragmentStatePagerAdapter {
ArrayList<Fragment>list;
public fragment(FragmentManager fm,ArrayList<Fragment>list) {
super(fm);
this.list=list;
}


@Override
public Fragment getItem(int arg0) {
// TODO 自动生成的方法存根
return list.get(arg0);
}


@Override
public int getCount() {
// TODO 自动生成的方法存根
return list.size();
}


}


4.调用适配器类  简单的Fragment切换就完成了

fragment fragment = new fragment(getSupportFragmentManager(), list);
vpPager.setAdapter(fragment);


***********************以下是完整代码**************************fragment的切换和底部按键文字图片的变化

public class MainActivity extends FragmentActivity {
int[] ii={R.id.b1,R.id.b2,R.id.b3};
RadioButton [] groupButtons=new RadioButton [ii.length];
ArrayList<Fragment>list=new ArrayList<Fragment>();
private fragment1 fragment1;
private fragment2 fragment2;
private fragment3 fragment3;
private ViewPager vpPager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        vpPager = (ViewPager) findViewById(R.id.vp);
        initList();
        initView();

//2.把fragment适配器类调用
        fragment fragment = new fragment(getSupportFragmentManager(), list);
        vpPager.setAdapter(fragment);

//4.切换界面的设置
        vpPager.setOnPageChangeListener(new OnPageChangeListener() {

@Override
public void onPageSelected(int arg0) {
// TODO 自动生成的方法存根
for (int i = 0; i< groupButtons.length; i++) {
if (arg0==i) {
groupButtons[arg0].setTextColor(Color.RED);
groupButtons[arg0].setChecked(true);
}else {
groupButtons[i].setTextColor(Color.BLACK);
groupButtons[i].setChecked(false);
}

}
}

@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO 自动生成的方法存根

}

@Override
public void onPageScrollStateChanged(int arg0) {
// TODO 自动生成的方法存根

}
});
    }

//3.设置布局底部按键点击事件的方法
private void initView() {
// TODO 自动生成的方法存根
for (int i = 0; i < ii.length; i++) {
final RadioButton  rr=(RadioButton ) findViewById(ii[i]);
rr.setTag(i);
rr.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO 自动生成的方法存根
vpPager.setCurrentItem((Integer) rr.getTag());
}
});
groupButtons[i]=rr;
}

//改变按键文字的颜色
groupButtons[0].setTextColor(Color.RED);

//是否是点击状态
groupButtons[0].setChecked(true);
}

//1.Fragment加入集合
private void initList() {
fragment1 = new fragment1();
fragment2 = new fragment2();
fragment3 = new fragment3();
list.add(fragment1);
list.add(fragment2);
list.add(fragment3);


}

//按键图片的是否点击状态的变化

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/icon01" android:state_checked="true"></item>
    <item android:drawable="@drawable/icon02" android:state_checked="false"></item>
<item android:drawable="@drawable/icon01"></item>
</selector>


0 0
原创粉丝点击