SlidingMenu控件的使用方法

slidingmenu是一个很是流行的开源组件,能够实现侧滑菜单的效果.

下面来说解下怎么使用,集成的方式有3种方式.

1. 经过编程的方式把Activity包装进SlidingMenu里,以下所示:
                           java

menu = new SlidingMenu(this);
// 设置SlidingMenu各类属性                            
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
menu.setShadowWidthRes(R.dimen.shadow_width);             
menu.setShadowDrawable(R.drawable.shadow);                
menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);      
menu.setFadeDegree(0.35f);

//把Activity附着到SlidingMenu                               
menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);

//设置侧边的菜单的layout
menu.setMenu(R.layout.menu_frame);


附着到SlidingMenu时,能够选择如下两种方式之一
SlidingMenu.SLIDING_WINDOW, 表示SlidingMenu(也即底层视图Behind View)滑出时,内容Activity(也即上层视图Above View)的Title或ActionBar会滑向一侧. 或者也能够这么理解:当SlidingMenu滑出时,连带它的title/ActionBar也会一块儿滑出,把Activity的title/ActionBar会挤向一边.这种方式是最多见的方式.
SlidingMenu.SLIDING_CONTENT, 表示当SlidingMenu滑出时,内容Activity的Title或ActionBar不会动,或者也能够说SlidingMenu根本就没有title/ActionBar.          

这种集成的方式能够参考Example示例里的AttachExample.java

2. 经过咱们的Activity继承SlidingActivity,直接把SlidingMenu嵌进来.
在咱们的onCreate方法里,除了经过调用setContentView,还须要调用setBehindContentView,它将设置侧滑出的Menu视图的Layout,而后就能够经过父类的getSlidingMenu获得SlidingMenu, 而后自定义或设置它的属性.以下所示:
public class BaseActivity extends SlidingFragmentActivity{
//...
public void onCreate(Bundle savedInstanceState) {
//....
// customize the SlidingMenu                             
SlidingMenu sm = getSlidingMenu(); //经过父类的getSlidingMenu获得SlidingMenu                      
sm.setShadowWidthRes(R.dimen.shadow_width);              
sm.setShadowDrawable(R.drawable.shadow);                 
sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);       
sm.setFadeDegree(0.35f);                                 
sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);  
//...
}

这种集成的方式能够参考Example示例里的BaseActivity.java

3. 咱们能够把SlidingMenu看做是一种View,直接在经过XML Layout来定义它(或用纯JAVA代码来定义也行), 而后能够把它放在它你想要放的地方.
以下所示,经过XML定义SlidingMenu:
<com.jeremyfeinstein.slidingmenu.lib.SlidingMenu
    xmlns:sliding="http://schemas.android.com/apk/res-auto"
    android:id="@+id/slidingmenulayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    sliding:viewAbove="@layout/YOUR_ABOVE_VIEW" <!--这里放上层的内容视图-->
    sliding:viewBehind="@layout/YOUR_BEHIND_BEHIND" <!--这里放底下的Menu视图-->
    sliding:touchModeAbove="margin|fullscreen" <!--只在边缘滑动时调出菜单,仍是全屏滑动时均可以调出菜单-->
    sliding:behindOffset="@dimen/YOUR_OFFSET"
    sliding:behindWidth="@dimen/YOUR_WIDTH"
    sliding:behindScrollScale="@dimen/YOUR_SCALE"
    sliding:shadowDrawable="@drawable/YOUR_SHADOW"
    sliding:shadowWidth="@dimen/YOUR_SHADOW_WIDTH"
    sliding:fadeEnabled="true|false"
    sliding:fadeDegree="float"
    sliding:selectorEnabled="true|false"
    sliding:selectorDrawable="@drawable/YOUR_SELECTOR"/>





有空全部属性的详细说明请参考:https://github.com/jfeinstein10/slidingmenu

SlidingMenu若是要使用ActionBarSherlock提供的Actionbar功能, 只要修改lib包中各SlidingActivity们extend Sherlock___Activity而不是___Activity.好比:public class SlidingFragmentActivity extends SherlockFragmentActivity implements SlidingActivityBase.


附带的DEMO源码分析:
最好先下载安装DEMO APP,而后体验下效果,再来读源码效果会很好.


程序入口Activity是ExampleListActivity.这个类继承了SherlockPreferenceActivity,而且使用偏好设置的

方式组织程序的功能:
this.addPreferencesFromResource(R.xml.main);

重写onPreferenceTreeClick(PreferenceScreen screen, Preference pref)方法,当点击某项功能时,根据偏

好的title获得要启动的Activity的类,而后把它包装在Intent中,最后startActivity启动这个Activity. android


Class<?> cls = null;
        String title = pref.getTitle().toString();
        if (title.equals(getString(R.string.properties))) {
            cls = PropertiesActivity.class;    
        } else if (title.equals(getString(R.string.attach))) {
            cls = AttachExample.class;

        Intent intent = new Intent(this, cls);
        startActivity(intent);
        return true;
AttachExample演示了经过代码menu = new SlidingMenu(this)的最基本的方式使用SlidingMenu的方法. BaseActivity是多个例子Activity的基类,定义了基本的Behind View及设置了SlidingMenu的一些属性,但有很 重要的一点的它没有定义Above View,由于Above View表示的是内容界面,是留给子类来实现的,子类有这些: FragmentChangeActivity PropertiesActivity LeftAndRightActivity,演示左右两边均可滑出菜单功能 SlidingContent,演示只滑动内容界面功能//setSlidingActionBarEnabled(false); SlidingTitleBar,演示可滑动ActionBar标题功能//setSlidingActionBarEnabled(true); ViewPagerActivity,演示结合ViewPager的使用方法,这在新闻类应用中很是常见,与网易新闻相似. com.jeremyfeinstein.slidingmenu.example.anim这个包演示了滑出菜单时动画效果的设置,可安装DEMO APP 体验下效果. 以上就是SlidingMenu最多见的功能与方法,细枝末节的地方可直接参考源码.
相关文章
相关标签/搜索