SlidingMenu侧拉抽屉框架

首先要引入SlidingMenu的库文件的类库,不能直接导入jar包。然后 Activity继承SlidingFragmentActivity。

public class SlidingMenuActivity extends SlidingFragmentActivity{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        //给抽屉设置布局
        setBehindContentView(R.layout.menu_frame);
        FragmentTransaction ft=getSupportFragmentManager().beginTransaction();
        ft.replace(R.id.menu_frame, new SildingFragment());
        ft.commit();
        //用SlidingMenu把fragment隐藏
        final SlidingMenu sm = getSlidingMenu();
        //SlidingMenu划出时主页面显示的剩余宽度
        sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);
        //设置阴影的宽度
        sm.setShadowWidthRes(R.dimen.shadow_width);
        //sm.setBehindScrollScale(0.25f);
        //SlidingMenu滑动时的渐变程度
        sm.setFadeDegree(0.35f);
        //滑动的模式TOUCHMODE_FULLSCREEN全屏可滑动
        sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        setContentView(R.layout.item_pull);
        Button bt=(Button) findViewById(R.id.bt);
        bt.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                //点击显示抽屉调用这个方法就行了(开源框架自带方法)
                toggle();
            }
        });
    }
}

fragment代码:


public class SildingFragment extends Fragment{
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View v = View.inflate(getActivity(), R.layout.fragment,null);
        TextView tv=(TextView) v.findViewById(R.id.tv);
        tv.setText("底层");
        return v;}
}

在values中的dimens.xml文件中添加:

<resources>

    <dimen name="slidingmenu_offset">150dp</dimen>
    <dimen name="list_padding">10dp</dimen>
    <dimen name="shadow_width">15dp</dimen>

    <integer name="num_cols">1</integer>

</resources>

先简单记下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.setOnOpenListener(onOpenListener);//监听slidingmenu打开
关于关闭menu有两个监听,简单的来说,对于menu close事件,一个是when,一个是after
menu.OnClosedListener(OnClosedListener);//监听slidingmenu关闭时事件
menu.OnClosedListener(OnClosedListener);//监听slidingmenu关闭后事件
左右都可以划出SlidingMenu菜单只需要设置
menu.setMode(SlidingMenu.LEFT_RIGHT);属性,然后设置右侧菜单的布局文件
menu.setSecondaryShadowDrawable(R.drawable.shadowright);//右侧菜单的阴影图片

1 初始化Slidingmenu:

SlidingMenu menu = getSlidingMenu();

2 setMode //设置滑动模式
设置是左滑还是右滑,还是左右都可以滑
menu.setMode(SlidingMenu.LEFT);//设置左滑菜单
menu.setMode(SlidingMenu.LEFT_RIGHT);//设置左右都可滑动
menu.setMode(SlidingMenu.TOUCHMODE_NONE);//不能手势滑动

3 设置SlidingMenu阴影
menu.setShadowWidthRes(R.dimen.shadow_width);//设置阴影图片的宽度
menu.setSecondaryShadowDrawable(R.drawable.shadowright);//设置右侧菜单阴影的图片资源
menu.setShadowDrawable(R.drawable.shadow);//设置左侧菜单阴影图片

4 设置SlidingMenu边框距离

menu.setBehindOffsetRes();//SlidingMenu滑出时距离边框的剩余宽度

menu.setBehindOffset(getWindowManager().getDefaultDisplay().getWidth() / 5);
// getWindowManager().getDefaultDisplay().getWidth() / 5 表示 距离屏幕宽度 1/5

5 设置SlidingMenu渐变
menu.setFadeEnabled(true);/是否有渐变
menu.setFadeDegree(0.35f);//设置渐变比率

6 设置SlidingMenu布局

 //给抽屉设置布局
        setBehindContentView(R.layout.silding);
        FragmentTransaction ft1=getSupportFragmentManager().beginTransaction();
        ft1.replace(R.id.fll, new SildingFragment());
        ft1.commit();

设置布局有3个方法  :

setContentView(R.layout.main);  //设置slidingmenu中间的布局
setBehindContentView(R.layout.main_menu_frame);//设置左侧的布局
sm.setSecondaryMenu(R.layout.main_menu_frame_two);//设置右侧的布局

使用的是左右两侧 我一般设置为 fragment

getSupportFragmentManager().beginTransaction().replace(R.id.menu_frame,messageFragment).commit();
表示为替换 fragment  

7 设置SlidingMenu滑动的拖拽效果
slidingMenu.setBehindScrollScale(0);

8 设置SlidingMenu判断打开状态 并 自动关闭或开启
menu.toggle();
如果SlidingMenu 它是open的,它会被关闭,反之亦然。

9 设置SlidingMenu触碰屏幕的范围
menu.setTouchModeBehind(SlidingMenu.TOUCHMODE_FULLSCREEN);
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
设置菜单滑动,触碰屏幕的范围setTouchModeAbove 

10 设置SlidingMenu关闭器监听
监听主要分2种   open  和  close    

open:
menu.setOnOpenedListener(onOpenListener);//监听slidingmenu打开之后调用     
menu.setOnOpenListener(onOpenListener);//监听slidingmenu打开时调用

close:
两个监听器  注意看了   一个是  closed  一个是 close 
menu.setOnClosedListener(listener); 
menu.setOnCloseListener(listener);

这两个的区别就是   
menu.OnCloseListener(OnClosedListener);//监听Slidingmenu关闭时事件
menu.OnClosedListener(OnClosedListener);//监听Slidingmenu关闭后事件

11 设置SlidingMenu是否淡入/淡出

menu.setFadeEnabled(true);

12 其它
menu.showMenu();//显示SlidingMenu 
menu.showContent();//显示内容 
menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);//使SlidingMenu附加在Activity上
menu.setMenu(R.layout.menu);//设置menu的布局文件

猜你喜欢

转载自blog.csdn.net/a2978157/article/details/72820589