- 论坛徽章:
- 1
|
Android设备上的TAB切换,在之前的博客上已经做的点总结,
这里主要介绍下功能相对复杂的可滑动的TAB切换(Viewpager+Fragment实现);
废话不多说了上代码:
顺便把Tabhost和RadioGroup这两种实现方式也上传;
这是PageAdapter的内容- package com.example.demotab;
-
- import java.util.List;
-
- import android.support.v4.app.Fragment;
- import android.support.v4.app.FragmentManager;
- import android.support.v4.app.FragmentPagerAdapter;
-
- public class MainPageAdapter extends FragmentPagerAdapter {
-
- private List<Fragment> fragments;
-
- public MainPageAdapter(FragmentManager fm) {
- super(fm);
- // TODO Auto-generated constructor stub
- }
-
- public MainPageAdapter(FragmentManager fm, List<Fragment> fragments) {
- super(fm);
- // TODO Auto-generated constructor stub
- this.fragments = fragments;
- }
-
- @Override
- public Fragment getItem(int arg0) {
- // TODO Auto-generated method stub
- return fragments.get(arg0);
- }
-
- @Override
- public int getCount() {
- // TODO Auto-generated method stub
- return fragments.size();
- }
-
- }
复制代码 在Activity中适配- package com.example.demotab;
-
- import java.util.ArrayList;
- import java.util.List;
-
- import android.os.Bundle;
- import android.app.Activity;
- import android.support.v4.app.Fragment;
- import android.support.v4.app.FragmentActivity;
- import android.support.v4.view.ViewPager;
- import android.support.v4.view.ViewPager.OnPageChangeListener;
- import android.util.Log;
- import android.widget.RadioButton;
- import android.widget.RadioGroup;
- import android.widget.RadioGroup.OnCheckedChangeListener;
-
- public class MainActivity extends FragmentActivity implements
- OnPageChangeListener, OnCheckedChangeListener {
-
- private ViewPager pager;
- private MainPageAdapter adapter;
- private List<Fragment> fragments;
- private RadioGroup group;
- private RadioButton button0, button1, button2;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- fragments = new ArrayList<Fragment>();
- fragments.add(new Fragment_A());
- fragments.add(new Fragment_B());
- fragments.add(new Fragment_C());
-
- pager = (ViewPager) findViewById(R.id.pager);
- adapter = new MainPageAdapter(getSupportFragmentManager(), fragments);
- pager.setAdapter(adapter);
- pager.setOffscreenPageLimit(fragments.size() - 1);// 缓存页面,显示第一个缓存最后一个
- pager.setOnPageChangeListener(this);
-
- group = (RadioGroup) findViewById(R.id.radioGroup1);
- button0 = (RadioButton) findViewById(R.id.radio0);
- button1 = (RadioButton) findViewById(R.id.radio1);
- button2 = (RadioButton) findViewById(R.id.radio2);
- group.setOnCheckedChangeListener(this);
- }
-
- @Override
- public void onPageScrollStateChanged(int arg0) {
- // TODO Auto-generated method stub
- Log.v("asdf", "onPageScrollStateChanged");
- }
-
- @Override
- public void onPageScrolled(int arg0, float arg1, int arg2) {
- // TODO Auto-generated method stub
- // Log.v("asdf", "onPageScrolled");
- }
-
- @Override
- public void onPageSelected(int arg0) {
- // TODO Auto-generated method stub
- Log.v("asdf", "onPageSelected");
- getTabState(arg0);
-
- }
-
- @Override
- public void onCheckedChanged(RadioGroup group, int checkedId) {
- // TODO Auto-generated method stub
- switch (checkedId) {
- case R.id.radio0:
- pager.setCurrentItem(0);
- break;
- case R.id.radio1:
- pager.setCurrentItem(1);
- break;
- case R.id.radio2:
- pager.setCurrentItem(2);
- break;
- default:
- break;
- }
- }
-
- private void getTabState(int index) {
- // TODO Auto-generated method stub
- button0.setChecked(false);
- button1.setChecked(false);
- button2.setChecked(false);
-
- switch (index) {
- case 0:
- button0.setChecked(true);
- break;
- case 1:
- button1.setChecked(true);
- break;
- case 2:
- button2.setChecked(true);
- break;
- default:
- break;
- }
-
- }
-
- }
复制代码 |
|