最近一双休就老是外面跑,到现在才有时间改动下Kris的实例。@Kris大神走的是4.0版本以上,而我还在默默苦逼走着2.2,为了版本往下兼容得改动下Kris的实例。附上Kris大神的原文章地址:[SlidingMenu Viewpager](http://my.eoe.cn/kris/archive/1688.html),Kris大神已经详细介绍了思路及相关代码,这里我也就不再重复了,主要讲讲修改的地方: 1.当然是将Fragment全部更换成support.v4兼容包的Fragment; 2.由于support.v4兼容包木有PreferenceFragment,只能将MenuFragment改成Fragment; 3.关于ActionBar的兼容,这里用到的是JakeWharton的ActionBarSherlock , 附上github地址:[ActionBarSherlock ](https://github.com/JakeWharton/ActionBarSherlock) 。 大家可以看看,用法基本很ActionBar区别不大,有一小部分有点不一样。为了兼容anctionBar这里将SlidingMenu里的SlidingActivity,Slidin gFragmentActivity,SlidingListActivity,SlidingPreferenceActivity分别继承ActionBarSherlock 里的SherlockActivity,SherlockFra gmentActivity,SherlockListActivity,SherlockPreferenceActivity。 4.SlidingMenuDemo的MainActivity我为了方便修改成继承SlidingFragmentActivity,MainActivity主要修改部分:
private void initSlidingMenu() { // customize the SlidingMenu SlidingMenu sm = getSlidingMenu(); sm.setShadowWidth(50); sm.setShadowDrawable(R.drawable.shadow); sm.setBehindOffset(80); sm.setFadeDegree(0.35f); //设置slding menu的几种手势模式 //TOUCHMODE_FULLSCREEN 全屏模式,在content页面中,滑动,可以打开sliding menu //TOUCHMODE_MARGIN 边缘模式,在content页面中,如果想打开slding ,你需要在屏幕边缘滑动才可以打开slding menu //TOUCHMODE_NONE 自然是不能通过手势打开啦 sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); //使用左上方icon可点,这样在onOptionsItemSelected里面才可以监听到R.id.home //getSupportActionBar为兼容包获得actionBar ActionBar actionbar = this.getSupportActionBar(); actionbar.setDisplayHomeAsUpEnabled(true); } @Override /**修改为SherlockFragmentActivity actionBar兼容包的监听 dong**/ public boolean onMenuItemSelected(int featureId, com.actionbarsherlock.view.MenuItem item) { switch (item.getItemId()) { case android.R.id.home: toggle(); return true; } return super.onMenuItemSelected(featureId, item); }5.剩下的基本改动不大,有两点要注意的是 1)要使用ActionBarSherlock的时候 AndroidManifest.xml里的要设置theme,是@style/Theme.Sherlock 。 2)编译的环境是4.0 6.我自己附加了一个FlipViewController的效果,github地址我给忘了,有知道的人可以提供下。用起来还是瞒简单的。 7.附上项目关联图: ![兼容ActionBar.jpg](http://a1.eoe.cn/www/home/201303/19/eed0/514823d5d1022.jpg '兼容ActionBar.jpg') 以上是为了ActionBar的低版本兼容。按我的习惯,还是习惯2.2的编译环境。所以我把ActionBar部分舍去,用ViewPagerIndicator来代替,ViewPagerIndicator的github地址:[ViewPagerIndicator](https://github.com/JakeWharton/Android-ViewPagerIndicator)。 1.将SlidingMenu改成2.2编译环境,主要将SlidingMenu的manageLayers硬件加速功能舍去,和一些高版本常量赋值下来代替或添加。 2.剔除ActionBar部分,更换。 3.ViewPagerIndicatorFragment:主要就是FragmentPagerAdapter的问题而已 ```java //ViewPagerIndicator与Viewpager的关联 indicator.setViewPager(pager); //这里是为了SlidingMenu触碰的控制 indicator.setOnPageChangeListener(onPageChangeListener);4.同样的,要注意:1)使用ViewPagerIndicator的时候 AndroidManifest.xml里的要设置theme,是@style/Theme.PageIndicatorDefaults。也可以自己依照你的需求参考github提供的sample进行修改 2)编译版本为2.2 5.附上项目关联图: ![代替actionBar.jpg](http://a1.eoe.cn/www/home/201303/19/1610/51482c5c5d3a7.jpg '代替actionBar.jpg') 在结尾处说说我对现在这种关联项目的一些看法: 1)在关联项目少的情况下还是可以接受,但一旦关联项目一多扩展方面有点抓急,要避免样式冲突等问题; 2)关联项目的时候,如果第三方包,要保证相同的第三方包的版本号一致,比如support.v4这个包,在编译的时候如果不一致的话会有错误提示,只需更换同一个就可以解决; 3)这样在模块化方面的确有好处,可引导样式、资源文件、布局文件,这是jar包不足的地方。在修改维护方面,可直接修改源码,目的性比较强,那一块出了问题或需要修改可以快速的找到; 最后附上Kirs大神的效果图: ![效果图.png](http://a1.eoe.cn/www/home/201303/19/5f89/51483062c7e90.png '效果图.png') 写得不好勿喷,如要喷请轻喷! 下载链接:[项目源码](http://www.eoeandroid.com/thread-262666-1-1.html)原文作者: don
原文地址: http://my.eoe.cn/dongzai/archive/1768.html