Slidemenu(側滑)的使用(三種使用方式)及屬性詳解


1、初始化Slidemenu:

       SlidingMenu sm = getSlidingMenu();

2、設置SlideMenu陰影:

       sm.setShadowWidthRes(R.dimen.shadow_width);//陰影寬度   
       sm.setShadowDrawable(R.drawable.shadow);//陰影Drawable

   

3、設置SlideMenu來開后離邊框距離:

       sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);//拉開后離邊框距離   

       sm.setBehindWidth(int width);

4、設置漸變:

        sm.setFadeEnabled(true);/是否有漸變  
        sm.setFadeDegree(0.35f);//設置漸變比率

5、設置SlideMenu布局:

        setBehindContentView(R.layout.fr_slide_menu_right_frame);

        getSupportFragmentManager().beginTransaction().replace(R.id.fr_slide_menu_right_frame, new AddChannelFragment()).commit();
              

.FragmentTransaction類主要用於管理Fragment,有添加,替換,刪除等操作。尤其是beginTransaction()與commit()方法與SQL中的事務有點類似。

6、設置模式:

sm.setMode(SlidingMenu.RIGHT);//菜單右邊顯示

SlidingMenu.LEFT 菜單左邊顯示;SlidingMenu.LEFT_RIGHT菜單兩側顯示。

注意:菜單兩側顯示的時候,既然顯示兩個就應該設置兩個布局,需要設置第二個布局:

           // 設置左右側都有
                sm.setMode(SlidingMenu.LEFT_RIGHT);
                // 此時要再次添加布局菜單,上一個為左側,這個為右側
                sm.setSecondaryMenu(R.layout.menu_frame_two);
                getSupportFragmentManager()
                                .beginTransaction()
                                .replace(R.id.menu_frame_two,
                                   new SampleListFragment()).commit();
                sm.setSecondaryShadowDrawable(R.drawable.shadowright);

7、設置划動模式:

 sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//全屏滑動

SlidingMenu.setTouchModeAbove().其中一共包含三中手勢模式:
TOUCHMODE_FULLSCREEN 全屏模式,在正文布局中通過手勢也可以打開SlidingMenu
TOUCHMODE_MARGIN 邊緣模式,在正文布局的邊緣處通過手勢可以找開SlidingMenu
TOUCHMODE_NONE 自然是不能通過手勢打開SlidingMenu了

8、設置SldingMenu自動判斷當前是打開還是關閉:

         toggle();

9、設置縮放比例:

   // 放縮比例
        getSlidingMenu().setBehindScrollScale((float)0.5);


二 所有屬性介紹

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);//右側菜單的陰影圖片
設置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();


slidingMenu = getSlidingMenu();
//設置是左滑還是右滑,還是左右都可以滑
slidingMenu.setMode(SlidingMenu.LEFT_RIGHT);
//設置陰影寬度
slidingMenu.setShadowWidth(getWindowManager().getDefaultDisplay().getWidth() / 40);
//設置左菜單陰影圖片
slidingMenu.setShadowDrawable(R.drawable.shadow);
//設置右菜單陰影圖片
slidingMenu.setSecondaryShadowDrawable(R.drawable.right_shadow);
//設置菜單占屏幕的比例
slidingMenu.setBehindOffset(getWindowManager().getDefaultDisplay().getWidth() / 5);
//設置滑動時菜單的是否淡入淡出
slidingMenu.setFadeEnabled(true);
//設置淡入淡出的比例
slidingMenu.setFadeDegree(0.4f);
//設置滑動時拖拽效果
slidingMenu.setBehindScrollScale(0);
//設置要使菜單滑動,觸碰屏幕的范圍
slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);

</pre><pre name="code" class="java">

    <pre name="code" class="java">import android. os.Bundle ;
    import android. view.LayoutInflater ;
    import android. view.View ;
     
    import com. jeremyfeinstein.slidingmenu .lib. SlidingMenu;
    import com. jeremyfeinstein.slidingmenu .lib. app.SlidingFragmentActivity ;
     
    /*********三種實現方式*****/
     
    public class MainActivity extends SlidingFragmentActivity {
     
           @Override
           public void onCreate(Bundle savedInstanceState) {
                 // //設置菜單的布局
                 setBehindContentView(R. layout.menu_layout );
                 setContentView(R. layout.activity_main );
                 // 第一步,初始化控件
                 SlidingMenu sMmenu = getSlidingMenu();
                 // 第二步,初始化參數
                 /**
                 * * Mode三種方式 SlidingMenu.LEFT_RIGHT) 左右都能划出菜單 第二種 SlidingMenu.LEFT
                 * 只能呼出左邊菜單 第三種 SlidingMenu.RIGHT 只能划出右邊菜單
                 * */
                 sMmenu.setMode( SlidingMenu.LEFT );
                 /**
                 * 觸摸模式 TOUCHMODE_FULLSCREEN 全屏划出菜單 第二種 TOUCHMODE_MARGIN 邊緣划出 第三種
                 * TOUCHMODE_NONE 不能通過手勢划出菜單
                 */
                 sMmenu.setTouchModeAbove( SlidingMenu.TOUCHMODE_MARGIN );
                 // 設置寬度
                 sMmenu.setBehindWidth( 200);
                 // show出來
                 sMmenu.showMenu() ;
           }
     
    }
     
     
     
    第二種
     
     
    package com. lb.mysidingmenu ;
     
    import java. util.ArrayList ;
     
    import com. jeremyfeinstein.slidingmenu .lib. SlidingMenu;
     
    import android. R.menu ;
    import android. os.Bundle ;
    import android.support.v7. app.ActionBarActivity ;
    import android. util.DisplayMetrics ;
    import android. view.View ;
    import android. view.WindowManager ;
    import android. widget.Adapter ;
    import android. widget.ArrayAdapter ;
    import android. widget.ListView ;
     
     
    public class SlidingMenuActivity extends ActionBarActivity {
           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 );
                 /**
                 * 觸摸模式
                 */
                 slidingMenu.setTouchModeAbove( SlidingMenu.TOUCHMODE_FULLSCREEN );
     
                 WindowManager wm = getWindowManager() ;
                 DisplayMetrics displayMetrics = new DisplayMetrics() ;
                 wm.getDefaultDisplay() .getMetrics(displayMetrics );
                 slidingMenu.setBehindWidth( displayMetrics.widthPixels / 2);
                 slidingMenu.setShadowDrawable( R.drawable .shadow) ;
                 slidingMenu.setBehindScrollScale(( float) 0.5);
                 /**
                 * �?��跟fragment搭配使用
                 */
    //          slidingMenu.setMenu(R.layout.menu_layout);
     
                 /**
                 *
                 */
                 slidingMenu.setMenu(getLeftMenu()) ;
     
     
                 /**
                 * SlidingMenu.SLIDING_WINDOW 包括 acionbar側滑 SlidingMenu.SLIDING_CONTENT
                 * actionbar不動
                 */
                
                
                
                
                 slidingMenu.attachToActivity (this , SlidingMenu.SLIDING_WINDOW );
                 /**
                 * 顯示側滑菜單界面
                 */
                 slidingMenu.showContent() ;
                
                
                 slidingMenu.toggle() ;
           }
           /**
           * 初始化側滑菜單的內容
           * @Title: getLeftMenu
           * @�?      �?
           * @�?      �? @return  
           * @return View    返回類型
           * @throws
           */
           private View getLeftMenu() {
                 View view = getLayoutInflater() .inflate( R.layout .menu_left_layout, null) ;
                 ListView listView = (ListView) view.findViewById( R.id .menu_left_listview) ;
                 ArrayList<String> list = new ArrayList<String>() ;
                 for ( int i = 0; i < 20; i ++) {
                       list.add( "" + i) ;
                 }
                 ArrayAdapter<String> adapter = new ArrayAdapter <String>(this, android. R.layout.simple_list_item_1, android.R.id.text1, list);
                 listView.setAdapter( adapter);
                 return view ;
     
           }
     
    }
     
     
     
     
    第三種
     
     
     
    package com.lb.mysidingmenu;
     
    import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
     
    import android.os.Bundle;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.view.ViewPager;
    import android.support.v7.app.ActionBarActivity;
    import android.util.DisplayMetrics;
    import android.view.WindowManager;
     
     
    public class SMFragmentActivity extends ActionBarActivity {
         private ViewPager pager;
         private SlidingMenu slidingMenu;
     
         @Override
         protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_content);
              pager = (ViewPager) this.findViewById(R.id.conten_viewpager);
              initSlidingMenu();
         }
     
         private void initSlidingMenu() {
              slidingMenu = new SlidingMenu(this);
              slidingMenu.setMode(SlidingMenu.LEFT);
              slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
              WindowManager wm = getWindowManager();
              DisplayMetrics displayMetrics = new DisplayMetrics();
              wm.getDefaultDisplay().getMetrics(displayMetrics);
              slidingMenu.setBehindWidth(displayMetrics.widthPixels / 2);
     
              slidingMenu.setMenu(R.layout.menu_fragment_layout);
     
              FragmentManager manager = getSupportFragmentManager();
              manager.beginTransaction().replace(R.id.container, new TestFragment()).commit();
              slidingMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
         }
     
    }

Demo地址(包含slidingMenu庫文件):http://download.csdn.net/detail/q908555281/9144465

</pre><pre name="code" class="java">


---------------------
作者:townkoim
來源:CSDN
原文:https://blog.csdn.net/q908555281/article/details/48784035
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM