Android UI-侧滑菜单

原博客出处
SlidingMenu(侧滑菜单)—通俗理解就是QQ侧滑效果的一个东西
官方点的解释:

GitHub上的一款开源项目,是一个library(库)的存在, 注意:可能是导入连个库,也可能是只有一个库
极客Ime讲解的就是导入两个库,
而本文只需要导入一个库就可以了! 而且两者代码差距还是很大不一样的
(可以理解SlidingMenu是一个库文件,人为设计的一套UI库文件,风格不同吧!)
我们只需要会一种就可以了,以后遇类型的一看就懂了
正题:
如何导入库文件暂时略过

1.理解SidingMenu的四种用法原理

  • 1 .在Activity中实现SildingMenu构造方法实现
           a.实现构造方法
           b.设置侧滑的页面和属性,
           c.添加到页面中
  • 2 .继承SidingActivity实现,
           a.继承类
           b.设置滑动页面
           c得到系统的滑动页面直接设置
  • 3. 把SidingFrame当做一个xml控件来看
    略过
  • 4. 继承 SlidingFragmentActivity来实现(左右滑动)
    核心代码的原理也就是:
        a 把主页面左右两边设置为 一个只含有Fragment(碎片控件)的Activity.   
                 这时候页面还是空碎片,无数据       
        b 然后用自定义的碎片代码,替换这个Fragment(碎片控件), 
                 这时候就有具体的页面数据了            
        c 点击的效果,出侧滑是,提供的点击左右出现 的一个点击事件,

全中文注解代码部分:
1.这是直接在Activity中实现SlidingMenu构造方法

      SlidingMenu  menu=new SlidingMenu(this); //初始化侧滑控件
        menu.setMode(SlidingMenu.LEFT); //设置滑动方向:左滑 

       menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); //设置触摸模式: 滑动任何位置都能打开
       menu.setShadowWidthRes(R.dimen.shadow_width); //设置阴影宽度: 资源文件ID数字
       menu.setShadowDrawable(R.drawable.shadow); //设置阴影资源: 资源xml文件 
       menu.setBehindOffsetRes(R.dimen.slidingmenu_offset); //设置滑动偏移量: 资源文件ID数字
       menu.setFadeDegree(0.35f); //设置渐入渐出的值:

       menu.attachToActivity(MainActivity.this, SlidingMenu.SLIDING_CONTENT);//滑动菜单添加进所有Activity中
       menu.setMenu(R.layout.activity_ce1); //设置侧滑页面的页面

2.直接继承SlidingActivity的方式

public class MainActivity extends SlidingActivity{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

         setBehindContentView(R.layout.activity_main2);             //设置侧滑Activity
         SlidingMenu menu=getSlidingMenu();                        //得到系统的侧滑菜单
         menu.setMode(SlidingMenu.LEFT);                            //设置到左边

         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);                                 //特效值
    }  
}

4.这种可能最实用一点,配合碎片用

    private void initRightMenu(){
/*【左侧滑】*/new MenuLeftFragment()是左碎片代码
        setBehindContentView(R.layout.left_menu_frame); /*设置侧滑页面(默认左)*/ 
            getSupportFragmentManager().beginTransaction()       /*碎片管理器,设置碎片,并提交事务(左)*/
            .replace(R.id.id_left_menu_frame, new MenuLeftFragment()).commit();

        SlidingMenu menu = getSlidingMenu(); /*初始化侧滑菜单*/
        menu.setMode(SlidingMenu.LEFT_RIGHT); /*设置左右都有侧滑*/
        menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); /*触摸模式(边缘)*/
        menu.setShadowWidthRes(R.dimen.shadow_width); /*阴影宽度*/
        menu.setShadowDrawable(R.drawable.shadow); /*阴影特效*/
        menu.setBehindOffsetRes(R.dimen.slidingmenu_offset); /* 滑动偏移量 */
        menu.setFadeDegree(0.35f); /*特效值*/

   /*【右侧滑】*/(new MenuRightFragment() 意思是构造的右碎片代码)
        menu.setSecondaryShadowDrawable(R.drawable.shadow); /*设置阴影资源(右)*/
        menu.setSecondaryMenu(R.layout.right_menu_frame); /*设置侧滑页面(右)(二级菜单)*/
        getSupportFragmentManager().beginTransaction()           /*碎片管理器,设置碎片,并提交事务(右)*/
                .replace(R.id.id_right_menu_frame,  new MenuRightFragment()).commit();
    }

/*左侧滑点击事件*/
    public void showLeftMenu(View view)
    {
        getSlidingMenu().showMenu();
    }
/*右侧滑点击事件*/
    public void showRightMenu(View view)
    {
        getSlidingMenu().showSecondaryMenu();
    }
}

碎片中替换的是页面代码,不是很重要了,贴不贴无所谓了,反正是一个碎片就可以了,
**理解:
无妨理解为偷梁换柱的含义,提供碎片当左右滑动菜单,
而又提供碎片替换碎片**

你可能感兴趣的:(android)