天天看点

SlidingMenu 侧滑菜单

一、SlidingMenu基础:      

(一)、SlidingMenu简介:

       SlidingMenu的是一种比较新的设置界面或配置界面效果,在主界面左滑或者右滑出现设置界面,能方便的进行各种操作.目前有大量的应用都在使用这一效果。如Evernote、Google+、Foursquare等,国内的豌豆夹,人人,360手机助手等都使用SlidingMenu的界面方案。

(二)、基本用法:    1、SlidingMenuLibrary是一个开源库,而不是一个完整的项目,要把它作为libary引入到你自己的工程里,简单配置一下就可以实现SlidingMenu的效果。 

二、使用SlidingMenu开源库开发:

(一)、开发步骤:     1、第一步:生成SlidingMenu对象         SlidingMenu slidMenu = new SlidingMenu(this);             2、第二步:设置参数:     (1)、SlidingMenu菜单模式:                 slidMenu.setMode(SlidingMenu.RIGHT);                 模式有三种,第一种是LEFT 第二种RIGHT 右边滑出,LEFT_RIGHT左右滑出             (2)、设置SlidingMenu菜单布局:                 slidMenu.setMenu(R.layout.menu_left);                 setMenu():设置左边滑动菜单的界面,setSecondaryMenu()设置右边滑动菜单的界面             (3)、设置菜单显示方式:                 slidMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);                  第一种TOUCHMODE_FULLSCREEN,第二种TOUCHMODE_MARGIN ,第三种 TOUCHMODE_NONE            (4)、设置 触摸滑动菜单时隐藏菜单:                 slidMenu.setTouchBehind();       (5)、设置菜单显示宽度:                 slidMenu.setBehindWidth(300); //单位:px             (6)、将菜单附加到当前的Activity窗口中:                 slidMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT); //以内容方式附加,共用一个ActionBar。SLIDING_CONTENT、SLIDING_WINDOW

    (7)、其他属性:                 //设置菜单与内容边缘的阴影效果                 slidMenu.setShadowWidth(10);                 slidMenu.setShadowDrawable(getResources().getDrawable(R.drawable.shadow_shape));                //滑动时透明度的改变                 slidMenu.setFadeEnabled(true);                 slidMenu.setFadeDegree(1.0f);                 //设置滑动菜单的滑动尺度                 slidMenu. setBehindScrollScale(0.25f);

(二)、SlidingMenu 常用属性介绍:             menu.setMode(SlidingMenu.LEFT);//设置左滑菜单             menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//设置滑动的屏幕范围,该设置为全屏区域都可以滑动             menu.setShadowDrawable(R.drawable.shadow);//设置阴影图片             menu.setShadowWidthRes(R.dimen.shadow_width);//设置阴影图片的宽度             menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);//SlidingMenu划出时主页面显示的剩余宽度             menu.setBehindWidth(400);//设置SlidingMenu菜单的宽度             menu.setFadeDegree(0.35f);//SlidingMenu滑动时的渐变程度             menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);//使SlidingMenu附加在Activity上             menu.setMenu(R.layout.menu_layout);//设置menu的布局文件             menu. toggle();//动态判断 自动关闭或开启SlidingMenu             menu.showMenu();//显示SlidingMenu             menu.showContent();//显示内容

            关于打开menu有两个监听,简单的来说,对于menu open事件,一个是when,一个是after 

            menu.setOnOpenListener(onOpenListener);//监听slidingmenu正在打开事件              menu.setOnOpenListener(onOpenedListener);//监听slidingmenu打开后事件

            关于关闭menu有两个监听,简单的来说,对于menu close事件,一个是when,一个是after              menu.OnCloseListener(OnCloseListener);//监听slidingmenu关闭时事件             menu.OnClosedListener(OnClosedListener);//监听slidingmenu关闭后事件

            左右都可以划出SlidingMenu菜单只需要设置:             menu.setMode(SlidingMenu.LEFT_RIGHT);属性,然后设置右侧菜单的布局文件             menu.setSecondaryShadowDrawable(R.drawable.shadowright);//右侧菜单的阴影图片

            使用Fragment实现SlidingMenu:             1.首先Activity继承自SlidingMenu包下的 SlidingFragmentActivity             2. setContentView(R.layout.content_frame);//该layout为一个全屏的FrameLayout             3. setBehindContentView(R.layout.menu_frame);//设置SlidingMenu使用的布局,同样是一个全屏的FrameLayout             4.设置SlidingMenu左侧菜单的Fragment                   [java]              setBehindContentView(R.layout.menu_frame);               FragmentTransaction t = this.getSupportFragmentManager().beginTransaction();               leftMenuFragment = new MenuFragment();               t.replace(R.id.menu_frame, leftMenuFragment);               t.commit();  

(三)、实例代码:

1、简单的滑动菜单效果:

public class MainActivity extends Activity {

    private SlidingMenu slidingMenu;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        slidingMenu = new SlidingMenu(this);    

        slidingMenu.setMode(SlidingMenu.LEFT_RIGHT);

        slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);

        slidingMenu.setMenu(R.layout.sm_left);

        slidingMenu.setSecondaryMenu(R.layout.sm_right);

        slidingMenu.setBehindWidth(200);

        slidingMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);

    }

}