android典型的选项卡界面利用viewPager+fragment实现,实现左右滑动切换界面,相关代码:
package com.example.select.ui;
import com.example.select.R;
import com.example.select.fragment.SelectFragment1;
import com.example.select.fragment.SelectFragment2;
import com.example.select.fragment.SelectFragment3;
import com.example.select.fragment.SelectFragment4;
import android.graphics.Color;
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.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
public class MainActivity extends FragmentActivity implements OnCheckedChangeListener,OnPageChangeListener{
private ViewPager viewPager;
private FragmentPagerAdapter adapter;
private RadioGroup rg;
private RadioButton rb_button1,rb_button2,rb_button3,rb_button4;
/**
* 初始化界面
*/
private void setupView(){
//初始化需要滑动的界面 共有4个
rb_button1 = (RadioButton) findViewById(R.id.rb_button1);
rb_button2 = (RadioButton) findViewById(R.id.rb_button2);
rb_button3 = (RadioButton) findViewById(R.id.rb_button3);
rb_button4 = (RadioButton) findViewById(R.id.rb_button4);
viewPager = (ViewPager) findViewById(R.id.huado_Pager);
adapter = new InnerAdapter(getSupportFragmentManager());
rg = (RadioGroup) findViewById(R.id.rg_select);
rg.setOnCheckedChangeListener(this);
viewPager.setAdapter(adapter);
viewPager.setOnPageChangeListener(this);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setupView();
}
//设置滑动的adapter内部类
private class InnerAdapter extends FragmentPagerAdapter {
public InnerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int arg0) {
<span style="font-size:18px; white-space: pre;"> </span><span style="font-size:18px;">//滑动位置变化的时候需要变化的界面 </span><span style="font-size: 18px;"> arg0表示需要滑动到相应的滑动界面</span>
<span style="font-size:18px;"> Fragment fragment = null;
switch (arg0) {
case 0:</span>
<span style="font-size:18px;"><span style="white-space:pre"> </span>//当是第一个界面的时显示 SelectFragment这个界面
fragment = new SelectFragment1();
break;
case 1:
fragment = new SelectFragment2();
break;
case 2:
fragment = new SelectFragment3();
break;
case 3:
fragment = new SelectFragment4();
break;
}
return fragment;
}
</span>
<span style="font-size:18px;"><span style="white-space:pre"> </span>//需要显示的界面总数
@Override
public int getCount() {
// TODO Auto-generated method stub
return 4;
}
}
/**
* Pager左右滑动监听器
*/
@Override
public void onPageSelected(int arg0) {
switch (arg0) {
case 0:
rg.check(R.id.rb_button1);
break;
case 1:
rg.check(R.id.rb_button2);
break;
case 2:
rg.check(R.id.rb_button3);
break;
case 3:
rg.check(R.id.rb_button4);
break;
}
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
/**
* RadioGroup 点击的时候跳转到不同的界面
*/
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch(checkedId){
case R.id.rb_button1:
viewPager.setCurrentItem(0);
rb_button1.setTextColor(Color.parseColor("#ffffff"));
rb_button2.setTextColor(Color.parseColor("#000000"));
rb_button3.setTextColor(Color.parseColor("#000000"));
rb_button4.setTextColor(Color.parseColor("#000000"));
break;
case R.id.rb_button2:
viewPager.setCurrentItem(1);
rb_button2.setTextColor(Color.parseColor("#ffffff"));
rb_button1.setTextColor(Color.parseColor("#000000"));
rb_button3.setTextColor(Color.parseColor("#000000"));
rb_button4.setTextColor(Color.parseColor("#000000"));
break;
case R.id.rb_button3:
viewPager.setCurrentItem(2);
rb_button3.setTextColor(Color.parseColor("#ffffff"));
rb_button1.setTextColor(Color.parseColor("#000000"));
rb_button2.setTextColor(Color.parseColor("#000000"));
rb_button4.setTextColor(Color.parseColor("#000000"));
break;
case R.id.rb_button4:
viewPager.setCurrentItem(3);
rb_button4.setTextColor(Color.parseColor("#ffffff"));
rb_button2.setTextColor(Color.parseColor("#000000"));
rb_button3.setTextColor(Color.parseColor("#000000"));
rb_button1.setTextColor(Color.parseColor("#000000"));
break;
}
}
}
</span>
下面有完整代码的相关连接: