Fragment加Viewpager的使用小结

来源:互联网 发布:美国读研gpa算法 编辑:程序博客网 时间:2024/06/04 20:06

先把布局放上来比较简单

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:background="@color/backgroup" >    <android.support.v4.view.ViewPager        android:id="@+id/vPager"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:layout_gravity="center"        android:paddingBottom="50dip"        android:persistentDrawingCache="animation" />    <ImageView         android:layout_width="match_parent"        android:layout_height="0.5dp"        android:layout_marginTop="-51dp"        android:layout_below="@+id/vPager"        android:alpha="0.1"        android:background="@color/grayl"/>    <RadioGroup        android:id="@+id/rg_main_btns"        android:layout_width="fill_parent"        android:layout_height="50dip"        android:layout_alignParentBottom="true"        android:background="@color/white"        android:gravity="center_vertical"        android:orientation="horizontal" >        <RadioButton            android:id="@+id/mainHomeTab"            style="@style/radioButtonStyle"            android:layout_width="0dp"            android:checked="true"            android:layout_weight="1"            android:layout_height="50dip"            android:text="@string/home"            android:drawableTop="@drawable/navigation_index"            android:textColor="@drawable/navigation_select_text" />        <RadioButton            android:id="@+id/mainNewsTab"            style="@style/radioButtonStyle"            android:layout_width="0dp"            android:layout_weight="1"            android:layout_height="50dip"            android:button="@null"            android:textColor="@drawable/navigation_select_text"            android:drawableTop="@drawable/navigation_information"            android:text="@string/news" />        <RadioButton            android:id="@+id/mainVideoTab"            style="@style/radioButtonStyle"            android:layout_width="0dp"            android:layout_weight="1"            android:layout_height="50dip"            android:textColor="@drawable/navigation_select_text"            android:drawableTop="@drawable/navigation_listener"            android:text="@string/video" />        <RadioButton            android:id="@+id/mainRoomTab"            style="@style/radioButtonStyle"            android:layout_width="0dp"            android:layout_weight="1"            android:layout_height="50dip"            android:textColor="@drawable/navigation_select_text"            android:drawableTop="@drawable/navigation_cloud"            android:text="@string/room" />        <RadioButton            android:id="@+id/mainPersonTab"            style="@style/radioButtonStyle"            android:layout_width="0dp"            android:layout_weight="1"            android:layout_height="50dip"            android:textColor="@drawable/navigation_select_text"            android:drawableTop="@drawable/navigation_me"            android:text="@string/person" />    </RadioGroup></RelativeLayout>

viewpager为内容需要填充的版块,布局的显示是这样的



接下来就是几个子的fragment 布局随便定 重要的是继承fragment,就这重要的就是继承FragmentActivity这个Activity了

下面贴上该Activity的代码!!!
public class MainActivity extends FragmentActivity implements OnPageChangeListener  {// 四个滑动页面private ViewPager mViewPager;private FragmentPagerAdapter mAdapter;private List<Fragment> mDatas;private RadioGroup rg_main_btns;private RadioButton mainHomeTab;// 控件private int mScreen1_4;/** 当前视图宽度 **/private Integer viewPagerW = 0;private static int width = 0;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//initLine();initView();initFragment();}/** * 初始化控件 */private void initView() {rg_main_btns=(RadioGroup) findViewById(R.id.rg_main_btns);mainHomeTab=(RadioButton) findViewById(R.id.mainHomeTab);mViewPager = (ViewPager) findViewById(R.id.vPager);mDatas = new ArrayList<Fragment>();rg_main_btns.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup arg0, int checkedId) {// TODO Auto-generated method stubswitch (checkedId) {case R.id.mainHomeTab:mViewPager.setCurrentItem(0);break;case R.id.mainNewsTab:mViewPager.setCurrentItem(1);break;case R.id.mainRoomTab:mViewPager.setCurrentItem(2);break;case R.id.mainVideoTab:mViewPager.setCurrentItem(3);break;case R.id.mainPersonTab:mViewPager.setCurrentItem(4);break;default:break;}}});}/** * 初始化fragment */private void initFragment() {PageFirstActivity mSDF = new PageFirstActivity();PageNewsActivity mCPF = new PageNewsActivity();PageVideoActivity mSSF = new PageVideoActivity();PageRoomActivity mPPF = new PageRoomActivity();MeActivity tt = new MeActivity();mDatas.add(mSDF);mDatas.add(mCPF);mDatas.add(mSSF);mDatas.add(mPPF);mDatas.add(tt);mAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) {@Overridepublic int getCount() {return mDatas == null ? 0 : mDatas.size();}@Overridepublic Fragment getItem(int position) {return mDatas.get(position);}};mViewPager.setAdapter(mAdapter);mViewPager.setCurrentItem(0);}@Overridepublic void onPageScrollStateChanged(int position) {}@Overridepublic void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}/** * 获取屏幕宽度 *  * @param context * @return */public static int getScreenWidth(Context context) {if (width == 0) {WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);Display display = manager.getDefaultDisplay();width = display.getWidth();}return width;}@Overridepublic void onPageSelected(int arg0) {// TODO Auto-generated method stub}}

实现这个效果就是定义一个List<Fragment> 然后向里面加Fragment再填充FragmentPagerAdapter,viewpager setAdpater基本就ok了
通过viewpager的setCurrentItem()选取就ok了

个人小结,有错误请指出谢谢!!!

0 0