Android(安卓)ViewPager分页功能
16lz
2021-01-24
仿照Android4.0拨号界面实现分页的界面,如下:
1、ViewPager是安卓的扩展包,可以从源代码out/target/common/obj/JAVA_LIBRARIES/android-support-v13-intermediates/classes.jar拷贝,注意是android-support-V13而不是android-support-v4,因为Activity中getFragmentManager()返回的android.app.FragmentManager对象,而v4中FragmentAdapter的构造函数参数类型android.v4.Fragmentmanager,所以你懂的,不兼容,而v13完美兼容。
2、main.xml布局如下:
<?xml version="1.0" encoding="utf-8"?>
ps:ViewPager加上全路径
3、自定义3个Fragment,Fragment在3.0推出,作用很多,使用方法推荐一个帖子
【eoeandroid索引】android fragment知识汇总
http://www.eoeandroid.com/thread-172624-1-1.html
Fragment的实现如下:
public class Fragment1 extends Fragment {@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {View root = inflater.inflate(R.layout.fragmentlayout1, container, false);return root;}}
其中动态加载的布局fragmentlayout.xml如下:
<?xml version="1.0" encoding="utf-8"?>
Fragment2和Fragment3的实现和1雷同,就不贴出来了
4、Activity中使用ViewPager和Fragment,代码如下:
public class FragmentViewPagerTestActivity extends Activity {private final static String TAG = "FragmentViewPagerTestActivity";private final PageChangeListener mPageChangeListener = new PageChangeListener();private ViewPager vp = null;private final int TAB_INDEX1 = 0;private final int TAB_INDEX2 = 1; private final int TAB_INDEX3 = 2;private final int TAB_INDEX_COUNT = 3; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); findView(); initView(); vp.setOnPageChangeListener(mPageChangeListener); setupFragment1Tab(); setupFragment2Tab(); setupFragment3Tab(); getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); getActionBar().setDisplayShowTitleEnabled(false); getActionBar().setDisplayShowHomeEnabled(false); } private class PageChangeListener implements OnPageChangeListener { private int mCurrentPosition = -1; private int mNextPosition = -1; @Overridepublic void onPageScrollStateChanged(int arg0) {// TODO Auto-generated method stub}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {// TODO Auto-generated method stub}@Overridepublic void onPageSelected(int arg0) {final ActionBar actionBar = getActionBar();if(mCurrentPosition == arg0) {Log.e(TAG , "Previous posion and next position is same");}actionBar.selectTab(actionBar.getTabAt(arg0));mNextPosition = arg0;}public void setCurrentPosition(int position) {mCurrentPosition = position;} } private TabListener mTabListener = new TabListener() { @Overridepublic void onTabReselected(Tab tab, FragmentTransaction ft) {}@Overridepublic void onTabSelected(Tab tab, FragmentTransaction ft) {if(vp.getCurrentItem() != tab.getPosition()) {vp.setCurrentItem(tab.getPosition(),true);}}@Overridepublic void onTabUnselected(Tab tab, FragmentTransaction ft) {} }; private void setupFragment1Tab() { Tab tab = getActionBar().newTab(); tab.setText("Fragment1"); tab.setTabListener(mTabListener); getActionBar().addTab(tab); } private void setupFragment2Tab() { Tab tab = getActionBar().newTab(); tab.setText("Fragment2"); tab.setTabListener(mTabListener); getActionBar().addTab(tab); } private void setupFragment3Tab() { Tab tab = getActionBar().newTab(); tab.setText("Fragment3"); tab.setTabListener(mTabListener); getActionBar().addTab(tab); } private void findView() { vp = (ViewPager) findViewById(R.id.viewpagerLayout); } private void initView() { android.app.FragmentManager fm = getFragmentManager(); vp.setAdapter(new MyViewPagerAdapter(fm)); } public class MyViewPagerAdapter extends FragmentPagerAdapter {public MyViewPagerAdapter(FragmentManager fm) {super(fm);}@Overridepublic Fragment getItem(int arg0) {switch(arg0) {case TAB_INDEX1:return new Fragment1();case TAB_INDEX2:return new Fragment2();case TAB_INDEX3:return new Fragment3();}return null;}@Overridepublic int getCount() {return TAB_INDEX_COUNT;} } }
PS:getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);指定定位模式为TABs,不能少;
更多相关文章
- android通过servlet上传文件到服务器
- Android(安卓)Util工具类的封装
- Android(安卓)利用viewpager 来实现Frament 有导航条
- Android中把集合显示到listview上
- Android(安卓)dialog 去除虚拟按键的解决方法
- Android输入法切换引导功能
- Android切换系统语言,自动更新应用界面显示语言
- Android点滴累计
- Android自定义dialog从屏幕底部弹出并且充满屏幕宽度