ActionBarSherlock与Fragment及ViewPager结合实现滑动切换页面
来源:互联网 发布:鲁大师是什么软件 编辑:程序博客网 时间:2024/05/17 04:29
ActionBarSherlock的使用在前两篇有详细的介绍,在这里就不进行赘述了,现在要实现的功能是对上一篇中的demo进行二次开发,实现滑动切换界面的功能,实现的思路是使用Viewpager来实现滑动【代码中有详细的注解,这里就不做过多陈述】。源码如下:
MainActivity.java代码:
public class MainActivity extends SherlockFragmentActivity {/*定义ActionBar*/private ActionBar mActionBar;/*定义ViewPager对象*/private ViewPager mViewPager;/*定义Adapter*/private ViewPagerAdapter mAdapter;/*定义一个View集合*/private ArrayList<View> mViews;/*定义ActionBar的Tab*/private ArrayList<Tab> mTabs;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);/*获取actionBar*/mActionBar = this.getSupportActionBar();/*设置actionBar为Tab方式进行导航*/mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);/*禁用ActionBar的标题*/mActionBar.setDisplayShowTitleEnabled(false);/*禁用ActionBar图标*/mActionBar.setDisplayUseLogoEnabled(false);/*禁用ActionBar返回键*/mActionBar.setDisplayHomeAsUpEnabled(false);/*创建Tabs集合*/mTabs = new ArrayList<ActionBar.Tab>();/*创建Tab1*/ActionBar.Tab tab1 = mActionBar.newTab();tab1.setText("摇一摇");/*设置tab 的监听事件(这个必须设置否则没有用)*/tab1.setTabListener(new MyTabListener(new Fragment1()));/*把tab1添加到tab集合中*/mTabs.add(tab1);/*把tab1添加到actionBar中*/mActionBar.addTab(tab1);/*创建Tab2*/ActionBar.Tab tab2 = mActionBar.newTab();tab2.setText("餐厅");/*设置tab的监听事件,这个必须设置,否则会出错*/tab2.setTabListener(new MyTabListener(new Fragment2()));/*把tab2添加到集合中*/mTabs.add(tab2);/*把tab2添加到ActionBar中*/mActionBar.addTab(tab2);/*获取ViewPager*/mViewPager = (ViewPager) this.findViewById(R.id.vPager);/*创建view集合*/mViews = new ArrayList<View>();/*向view集合中添加view对象*/mViews.add(LayoutInflater.from(this).inflate(R.layout.lay1, null));mViews.add(LayoutInflater.from(this).inflate(R.layout.lay2, null));/*初始化适配器*/mAdapter = new ViewPagerAdapter(this.getSupportFragmentManager());/*设置适配器*/mViewPager.setAdapter(mAdapter);/*设置viewPager的监听事件*/mViewPager.setOnPageChangeListener(new MyPageChangeListener());/*设置默认显示第一项*/mViewPager.setCurrentItem(0);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getSupportMenuInflater().inflate(R.menu.main, menu);return true;}/** * 定义onPageChangeListener内部类 */class MyPageChangeListener implements OnPageChangeListener{@Overridepublic void onPageScrollStateChanged(int arg0) {// TODO Auto-generated method stub}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {// TODO Auto-generated method stub}/** * 这个方法很重要 */public void onPageSelected(int index) {/*设置当前要显示的View*/mViewPager.setCurrentItem(index);/*让actionBar选中对应的Tab*/mActionBar.selectTab(mTabs.get(index));}}/** * 定义Tablistener内部类 */class MyTabListener implements TabListener{private Fragment fragment;/*构造函数*/public MyTabListener(Fragment fragment) {super();this.fragment = fragment;}@Overridepublic void onTabSelected(Tab tab, FragmentTransaction ft) {if (mViewPager != null){/*把tab设置到ViewPager中,这就是为什么tab能滑动的原因*/mViewPager.setCurrentItem(tab.getPosition());}}@Overridepublic void onTabUnselected(Tab tab, FragmentTransaction ft) {// TODO Auto-generated method stub}@Overridepublic void onTabReselected(Tab tab, FragmentTransaction ft) {// TODO Auto-generated method stub}}}
public class ViewPagerAdapter extends FragmentPagerAdapter {/* 定义两个Fragment索引 */private static final int FRAGMENT_INDEX_1 = 0;private static final int FRAGMENT_INDEX_2 = 1;public ViewPagerAdapter(FragmentManager fm) {super(fm);}@Overridepublic Fragment getItem(int index) {System.out.println("index:" + index);Fragment mFragment = null;switch (index) {case FRAGMENT_INDEX_1:mFragment = new Fragment1();break;case FRAGMENT_INDEX_2:mFragment = new Fragment2();break;default:break;}return mFragment;}@Overridepublic int getCount() {return 2;}}
Fragment1.java与Fragment2.java代码类似:
public class Fragment1 extends SherlockFragment {/** * 返回fragment视图 */public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {View rootView = inflater.inflate(R.layout.lay1, container, false);return rootView;}}
activity_main.java代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <android.support.v4.view.ViewPager android:id="@+id/vPager" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_gravity="center" android:layout_weight="1.0" android:background="#000000" android:flipInterval="30" android:persistentDrawingCache="animation" /></LinearLayout>
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="#158684" ></LinearLayout>
不要忘记在清单文件中修改主题样式:
android:theme="@style/Theme.Sherlock.Light"
demo效果展示:
下载demo:http://download.csdn.net/detail/lzm1340458776/7320561
0 0
- ActionBarSherlock与Fragment及ViewPager结合实现滑动切换页面
- ActionBarSherlock与Viewpager及Fragment结合实现仿新闻客户端顶部滑动切换效果
- ActionBarSherlock与Fragment结合实现点击切换页面
- ViewPager结合Fragment实现页面左右滑动
- Fragment+Viewpager结合实现底部页面滑动
- ViewPager结合Fragment 实现的页面切换
- TabLayou+fragment+viewpager实现滑动切换页面
- Viewpager+Fragment实现左右滑动切换页面
- fragment+viewpager+tablayou实现滑动切换页面
- Fragment嵌套Fragment, TabLayout + ViewPager实现页面切换滑动
- Fragment与ViewPager实现页面滑动翻页
- viewpager+fragment结合实现滑动
- ViewPager+Fragment+广播来实现一个滑动页面切换
- Android ViewPager加Fragment实现滑动或者点击页面切换
- ViewPager+Fragment实现滑动页面
- ViewPager+Fragment实现滑动页面
- ViewPager + Fragment 实现页面滑动
- Fragment + ViewPager实现滑动页面
- 判断闰年的方法
- HTTP头中增加自定义的属性然后post请求第三方的页面
- Activity四种启动模式之singleTask应用
- 分区表例子备份
- C# B/S 使用域用户验证
- ActionBarSherlock与Fragment及ViewPager结合实现滑动切换页面
- UNDO相关问题总结(六)
- 项目PMO工作
- iframe获取父、子窗口的方法
- Joomla插件构造函数后门分析
- JavaBean中使用JDBC方式进行事务处理
- js 获取网页高度等信息
- eclipse中启动Tomcat7 server失败Caused by: java.lang.IllegalArgumentException: The servlets named...
- 怎样发高质量的外链