SlidingMenu初识

SlidingMenu——方式1
1、初始化 SlidingMenu 对象
2、设置 SlidingMenu 的菜单模式。 只有左侧菜单,只有右侧菜单,或者双侧菜单
3、设置SlidingMenu显示的菜单布局
4、设置菜单的显示方式
5、设置滑动菜单的隐藏方式
6、设置菜单显示宽度
7、将菜单附加到当前Activity中进行显示


 
注意,
1、寻找菜单中控件,一定要在布局加入后,才要findViewById,否则会出现空指针异常
2、如果菜单中有点击事件,则不可以将菜单的显示设为内容滑动(两者有冲突)

功能:
1、因为可以加入布局,所以菜单中可以随意定义显示的布局样式
2、可以设置菜单的显示,隐藏方式(边缘滑动,内容滑动,两者都不可以)
3、可以设置显示方式(只有左侧菜单,只有右侧菜单,两侧都有)
4、可以设置菜单显示的宽度
5、在添加到activity中,可以设置是否共享标题栏
6、可以控制菜单滚动时,先出现菜单哪部分
7、菜单滚动时,可以改变菜单的透明度变化

SlidingMenu——方式2
1.  将继承的 Activity 替换为框架中的 SlidingFragmentActivity
2.  调用 setBehindContentView 设置菜单的显示
3.  初始化 SlidingMenu 对象
4.  设置 SlidingMenu 的菜单模式。 只有左侧菜单,只有右侧菜单,或者双侧菜单
5.  设置菜单的显示方式
6.  设置滑动菜单的隐藏方式
7.  设置菜单显示宽度


注意:
1、寻找菜单中控件,一定要在 sliding=getSlidingMenu()后 ,才要findViewById,否则会出现空指针异常

与1的不同:
1.因为没有attachToActivit方法,所以就不存在是否共享标题栏,其实activity本身没有标题栏
SlidingMenu——方式3
  • 1. 在方式一或者方式二的基础上先显示一个基础SlidingMenu
  • 2.在设置SlidingMenu菜单显示的布局中,将内容变为一个FrameLayout
  • 3.通过FragmentManageraddreplace方法将要作为菜单显示内容的Fragment替换第二步中FrameLayout中的内容即可
注意:
这样写对菜单内的控件的点击事件,只能写在fragMent中,并且更新UI还得通过回调接口


贴上部分代码
SlidingMenu1:
package  com.wang.main;
 
import  android.graphics.Bitmap;
import  android.graphics.BitmapFactory;
import  android.support.v7.app.AppCompatActivity;
import  android.os.Bundle;
import  android.util.Log;
import  android.view.DragEvent;
import  android.view.View;
import  android.widget.Button;
import  android.widget.ImageView;
import  android.widget.LinearLayout;
import  android.widget.ScrollView;
import  android.widget.TextView;
import  android.widget.Toast;
 
import  com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
 
public  class  MainActivity  extends  AppCompatActivity  implements  View.OnClickListener {
 
     private  SlidingMenu sliding;
     private  ImageView iv;
     private  LinearLayout layout1,layout2,layout3;
     private  TextView bottom_tv1,bottom_tv2;
     private  ScrollView scrollview;
 
     @Override
     protected  void  onCreate(Bundle savedInstanceState) {
         super .onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
 
         //1.初始化slidingmenu对象
         sliding= new  SlidingMenu( this );
 
         //2、设置slidingmenu的显示方式,left=只有左侧菜单,rigth=只有右侧菜单,LEFT_RIGHT=既能显示左侧,又能显示右侧
         sliding.setMode(SlidingMenu.LEFT);
 
         //3、设置slidingmenu的菜单布局
         sliding.setMenu(R.layout.slidingleft);
         initView();
         //4、设置菜单的显示方式
//        /*
//        *SlidingMenu.TOUCHMODE_FULLSCREEN  在屏幕的任意位置滑动即可打开侧滑菜单
//        * SlidingMenu.TOUCHMODE_MARGIN   必须从边缘开始滑动才能打开侧滑菜单
//        * SlidingMenu.TOUCHMODE_NONE   无论在什么位置滑动都不能打开侧滑菜单,必须通过点击按钮,手动调用打开菜单的方法
//          * */
         sliding.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
 
         //5、设置滑动菜单的隐藏方式
         sliding.setTouchModeBehind(SlidingMenu.TOUCHMODE_MARGIN);
 
         //6、设置菜单显示宽度,设为屏幕的1/3
         int  i=getResources().getDisplayMetrics().widthPixels* 2 / 3 ;
         sliding.setBehindWidth(i);
 
         //设置内容与菜单边缘的阴影效果
         sliding.setShadowDrawable(getResources().getDrawable(R.drawable.shape_sdshadowdraw));
         sliding.setShadowWidth( 30 );
 
         //设置菜单的透明度的改变,其中setFadeEnabled默认值为true
//        sliding.setFadeEnabled(false);
          sliding.setFadeDegree( 1 .0f);
 
         //0-1,其中0表示,拉动菜单滚动时先出现的是菜单的开头控件,1表示先出现末尾控件,默认0.5
         sliding.setBehindScrollScale( 0 .5f);
 
         //7、将菜单添加到当前activity中显示
//        /*
//         * SlidingMenu.SLIDING_WINDOW  以窗口方式将侧滑菜单加到当前Activity中
//         * SlidingMenu.SLIDING_CONTENT  以内容方式将侧滑菜单加到当前Activity中
//         * 两者的区别在于是否共享标题栏
//         * */
         sliding.attachToActivity( this ,SlidingMenu.SLIDING_WINDOW);
 
         //本来是要联网读取数据,并将图片弄成圆形的,现在手动画一下
 
         GetRoundBitmap gp= new    GetRoundBitmap();
         Bitmap bp=gp.getRoundBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.naruto));
         Log.i( "mtag" , "start" +bp);
         Log.i( "mtag" , "start" +iv);
         iv.setImageBitmap(bp);

 
     }
 
 
     /**
  * 寻找控件
  *
  *@author WangShujie
  *created at 2016/4/23 18:59
  */
     private  void  initView() {
         iv= (ImageView)sliding.getMenu().findViewById(R.id.slidingleft_iv);
         layout1= (LinearLayout) sliding.getMenu().findViewById(R.id.slidingleft_layout1);
         layout2=(LinearLayout) sliding.getMenu().findViewById(R.id.slidingleft_layout2);
         layout3=(LinearLayout) sliding.getMenu().findViewById(R.id.slidingleft_layout3);
         bottom_tv1= (TextView) sliding.getMenu().findViewById(R.id.sliding_botomtv1);
         bottom_tv2= (TextView) sliding.getMenu().findViewById(R.id.sliding_botomtv2);
         scrollview= (ScrollView) sliding.getMenu().findViewById(R.id.slidingleft_lv);
 
         layout1.setOnClickListener( this );
         layout2.setOnClickListener( this );
         layout3.setOnClickListener( this );
         bottom_tv1.setOnClickListener( this );
         bottom_tv2.setOnClickListener( this );
 
     }
 
 
     /**
      *对控件进行监听
      *
      *@author WangShujie
      *created at 2016/4/23 19:31
      */
     @Override
     public  void  onClick(View v) {
         switch  (v.getId()){
             case  R.id.slidingleft_layout1:
                 Toast.makeText(MainActivity. this "你点击了我的好友" , Toast.LENGTH_SHORT).show();
                 break ;
             case  R.id.slidingleft_layout2:
                 Toast.makeText(MainActivity. this "你点击了我的收藏" , Toast.LENGTH_SHORT).show();
 
                 break ;
             case  R.id.slidingleft_layout3:
                 Toast.makeText(MainActivity. this "你点击了退出" , Toast.LENGTH_SHORT).show();
 
                 break ;
 
             case  R.id.sliding_botomtv1:
                 Toast.makeText(MainActivity. this "你点击了设置1" , Toast.LENGTH_SHORT).show();
 
                 break ;
             case  R.id.sliding_botomtv2:
                 Toast.makeText(MainActivity. this "你点击了设置2" , Toast.LENGTH_SHORT).show();
 
                 break ;
         }
     }
 
}
SlidingMenu2:
package  com.wang.main;
 
import  android.graphics.Bitmap;
import  android.graphics.BitmapFactory;
import  android.os.Bundle;
import  android.util.Log;
import  android.view.View;
import  android.widget.ImageView;
import  android.widget.LinearLayout;
import  android.widget.ScrollView;
import  android.widget.TextView;
import  android.widget.Toast;
 
import  com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import  com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;
import  com.wang.main.GetRoundBitmap;
 
public  class  MainActivity  extends  SlidingFragmentActivity  implements  View.OnClickListener {
 
     private  SlidingMenu sliding;
     private  ImageView iv;
     private  LinearLayout layout1,layout2,layout3;
     private  TextView bottom_tv1,bottom_tv2;
     private  ScrollView scrollview;
 
     @Override
     public  void  onCreate(Bundle savedInstanceState) {
         super .onCreate(savedInstanceState);
 
 
         //设置页面显示内容,不包括菜单
         setContentView(R.layout.activity_main);
         //1、将继承的Activity替换为框架中的SlidingFragmentActivity
 
         //2、调用setBehindContentView设置菜单的显示
         setBehindContentView(R.layout.slidingleft);
 
 
         //3、获取SlidingFragmentActivity中自带的菜单对象
         sliding=getSlidingMenu();
         initView();
 
         //4、设置slidingmenu的显示方式,left=只有左侧菜单,rigth=只有右侧菜单,LEFT_RIGHT=既能显示左侧,又能显示右侧
         sliding.setMode(SlidingMenu.LEFT);
 
 
         //5、设置菜单的显示方式
//        /*
//        *SlidingMenu.TOUCHMODE_FULLSCREEN  在屏幕的任意位置滑动即可打开侧滑菜单
//        * SlidingMenu.TOUCHMODE_MARGIN   必须从边缘开始滑动才能打开侧滑菜单
//        * SlidingMenu.TOUCHMODE_NONE   无论在什么位置滑动都不能打开侧滑菜单,必须通过点击按钮,手动调用打开菜单的方法
//          * */
         sliding.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
 
         //6、设置滑动菜单的隐藏方式
         sliding.setTouchModeBehind(SlidingMenu.TOUCHMODE_MARGIN);
 
         //7、设置菜单显示宽度,设为屏幕的1/3
         int  i=getResources().getDisplayMetrics().widthPixels* 2 / 3 ;
         sliding.setBehindWidth(i);
 
         //设置内容与菜单边缘的阴影效果
         sliding.setShadowDrawable(getResources().getDrawable(R.drawable.shape_sdshadowdraw));
         sliding.setShadowWidth( 30 );
 
         //设置菜单的透明度的改变,其中setFadeEnabled默认值为true
//        sliding.setFadeEnabled(false);
         sliding.setFadeDegree( 1 .0f);
 
         //0-1,其中0表示,拉动菜单滚动时先出现的是菜单的开头控件,1表示先出现末尾控件,默认0.5
         sliding.setBehindScrollScale( 0 .5f);
 
 
 
 
         //本来是要联网读取数据,并将图片弄成圆形的,现在手动画一下
 
         GetRoundBitmap gp= new    GetRoundBitmap();
         Bitmap bp=gp.getRoundBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.naruto));
         Log.i( "mtag" , "start" +bp);
         Log.i( "mtag" , "start" +iv);
         iv.setImageBitmap(bp);
 
     }
 
 
     /**
      * 寻找控件
      *
      *@author WangShujie
      *created at 2016/4/23 18:59
      */
     private  void  initView() {
         iv= (ImageView)sliding.getMenu().findViewById(R.id.slidingleft_iv);
         layout1= (LinearLayout) sliding.getMenu().findViewById(R.id.slidingleft_layout1);
         layout2=(LinearLayout) sliding.getMenu().findViewById(R.id.slidingleft_layout2);
         layout3=(LinearLayout) sliding.getMenu().findViewById(R.id.slidingleft_layout3);
         bottom_tv1= (TextView) sliding.getMenu().findViewById(R.id.sliding_botomtv1);
         bottom_tv2= (TextView) sliding.getMenu().findViewById(R.id.sliding_botomtv2);
         scrollview= (ScrollView) sliding.getMenu().findViewById(R.id.slidingleft_lv);
         Log.i( "mtag" , "tianfuxiaoyan++iv====" +iv);
         Log.i( "mtag" , "tianfuxiaoyan++layout1====" +layout1);
         Log.i( "mtag" , "tianfuxiaoyan++bottom_tv1====" +bottom_tv1);
         layout1.setOnClickListener( this );
         layout2.setOnClickListener( this );
         layout3.setOnClickListener( this );
         bottom_tv1.setOnClickListener( this );
         bottom_tv2.setOnClickListener( this );
 
     }
 
 
     /**
      *对控件进行监听
      *
      *@author WangShujie
      *created at 2016/4/23 19:31
      */
     @Override
     public  void  onClick(View v) {
         switch  (v.getId()){
             case  R.id.slidingleft_layout1:
                 Toast.makeText(MainActivity. this "你点击了我的好友" , Toast.LENGTH_SHORT).show();
                 break ;
             case  R.id.slidingleft_layout2:
                 Toast.makeText(MainActivity. this "你点击了我的收藏" , Toast.LENGTH_SHORT).show();
 
                 break ;
             case  R.id.slidingleft_layout3:
                 Toast.makeText(MainActivity. this "你点击了退出" , Toast.LENGTH_SHORT).show();
 
                 break ;
 
             case  R.id.sliding_botomtv1:
                 Toast.makeText(MainActivity. this "你点击了设置1" , Toast.LENGTH_SHORT).show();
 
                 break ;
             case  R.id.sliding_botomtv2:
                 Toast.makeText(MainActivity. this "你点击了设置2" , Toast.LENGTH_SHORT).show();
 
                 break ;
         }
     }
 
}
原码下载地址:
http://download.csdn.net/detail/tianfuxiaoyan/9501522
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值