zoukankan      html  css  js  c++  java
  • 安卓开源框架SlidingMenu使用

    在安卓开发中,会使用很多的开源框架,这篇博文讲的是SlidingMenu--侧边栏

    SlidingMenu的是一种比较新的设置界面或配置界面效果,在主界面左滑或者右滑出现设置界面,

    能方便的进行各种操作.目前有大量的应用都在使用这一效果。

    如Evernote、Google+、Foursquare等,国内的豌豆夹,人人,360手机助手等都使用SlidingMenu的界面方案。

    这是gitHub的链接 :  https://github.com/jfeinstein10/SlidingMenu

    去gitHub下载到本地后,引入library引入到自己的项目中,然后在项目配置中,添加依赖关系

    注意: SlidingMenu依赖于另一个开源项目ActionBarSherlock,所以需要将ActionBarSherlock添加作为SlidingMenu的库工程,否则会报资源找不到错误。

       如果不想运行例子,单纯要library,不引用ActionBar也行


    SlidingMenu集成常见错误:

    • Jar mismatch! Fix your dependencies :引用的工程和自身工程以来的jar包版本不一致导致的冲突。确保SlidingMenu和ActionBarSherLock所使用的jar包版本一致
    • 如果使用到ActionBarSherLock的相关api,可能报找不到getSupportActionBar等ActionBarSherLock的方法。原因是使用ActionBarSherLock的Activity需继承于SherlockActivity,修改SlidingMenu library中的SlidingFragmentActivity,让它继承于SherlockFragmentActivity,重新编译library导入。

    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);//右侧菜单的阴影图片

    使用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

      

    // 添加侧边栏
    setBehindContentView(R.layout.menu_frame); 
    SlidingMenu slidingMenu = getSlidingMenu();
    // 全屏触摸(可省略)
    slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
    // 屏幕预留200像素(可省略)
    slidingMenu.setBehindOffset(200);
    
    // Fragment管理器
    FragmentManager fm = getSupportFragmentManager();
    FragmentTransaction transaction = fm.beginTransaction();// 开始事务
    // 将帧布局替换为对应的Fragment
    transaction.replace(R.id.fl_content, new ContentFragment(), null);
    transaction.replace(R.id.fl_left_menu, new LeftMenuFragment(), null);
    transaction.commit();// 提交事务

    设置SlidingMenu属性

    sm = getSlidingMenu();
    //如果只显示左侧菜单就是用LEFT,右侧就RIGHT,左右都支持就LEFT_RIGHT
    sm.setMode(SlidingMenu.LEFT_RIGHT);//设置菜单滑动模式,菜单是出现在左侧还是右侧,还是左右两侧都有
    sm.setShadowDrawable(R.drawable.shadow);//设置阴影的图片资源
    sm.setShadowWidthRes(R.dimen.shadow_width);//设置阴影图片的宽度
    //sm.setBehindWidth(200);//设置菜单的宽
    sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);//SlidingMenu划出时主页面显示的剩余宽度
    sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//设置滑动的区域

    支持右侧划出菜单:

    //SlidingMenu可以同时支持划出左右两侧的菜单,互不冲突,而且动画优美,体验良好。
    sm.setSecondaryMenu(R.layout.menu_frame2);//设置右侧菜单
    sm.setSecondaryShadowDrawable(R.drawable.shadowright);//设置右侧菜单阴影的图片资源
    //右侧SlidingMenu的Fragment
    getSupportFragmentManager().beginTransaction().replace(R.id.menu_frame2, new SampleListFragment()).commit();

    设置ActionBar可以被点击:

    getSupportActionBar().setHomeButtonEnabled(true);//actionbar主按键可以被点击
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);//显示向左的图标
    setSlidingActionBarEnabled(false);//左右两侧slidingmenu的fragment是否显示标题栏
  • 相关阅读:
    docker学习-docker核心技术
    Ecmall 中国地区设置
    lazyload.js实现图片异步载入
    inpyt 按钮变透明 边框
    vertical-align0 垂直对齐- 图片 兼容个浏览器
    div文字超出
    jquery满屏滚动代码
    $().index() 两种用法
    setTimeout不断重复执行
    background属性
  • 原文地址:https://www.cnblogs.com/AganRun/p/7931896.html
Copyright © 2011-2022 走看看