Android開源SlidingMenu的使用

來源:互聯網
上載者:User

標籤:android   slidingmenu開源   menu   

一、SlidingMenu簡介

SlidingMenu是最常用的幾個開源項目之一.

GitHub上的開源項目Slidingmenu提供了最佳的實現:定製靈活、各種陰影和漸層以及動畫的滑動效果都不錯。不過這是一個開源庫,要把它作為library引入到你自己的工程裡,簡單配置一下就可以實現SlidingMenu的效果。

二、項目的匯入
 
三、具體實現

你可以直接繼承app這個包中的SlidingActivity,SlidingFragmentActivity,SlidingListActivity等這幾個類去實現這個效果,或直接在項目中初始化SlidingMenu,並進行配置後使用。

1、項目中初始化SlidingMenu


        SlidingMenu menu = new SlidingMenu(this);        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);        menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);<span style="white-space:pre"></span>menu.setMenu(R.layout.menu);
其中可以在setMenu()前這樣實現:

View view = LayoutInflater.from(this).inflate(R.layout.menu, null);
        menu.setMenu(view);

這樣就可以直接操作menu布局中的控制項了。

2、SlidingFragmentActivity的實現主類繼承SlidingFragmentActivity。因為SlidingFragmentActivity裡面已整合了SlidingMenu,所以可以通過getSlidingMenu()可以擷取到一個SlidingMenu對象,然後像下面的代碼一樣設定常用的屬性就可以l
<span style="white-space:pre"></span>// 設定存放側滑欄的容器的布局檔案setBehindContentView(R.layout.menu);// 將側滑欄的fragment類填充到側滑欄的容器的布局檔案中FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();Fragment fragment = new MenuFragment();transaction.replace(R.id.menu_fragment, fragment);transaction.commit();SlidingMenu sm = getSlidingMenu();sm.setShadowWidth(0);sm.setShadowDrawable(R.drawable.shadow);// 設定側滑欄完全展開之後,距離另外一邊的距離,單位px,設定的越大,側滑欄的寬度越小sm.setBehindOffset(100);// 設定漸層的程度,範圍是0-1.0f,設定的越大,則在側滑欄剛划出的時候,顏色就越暗。1.0f的時候,顏色為全黑sm.setFadeDegree(0.3f);// 設定觸摸模式,可以選擇全屏划出,或者是邊緣划出,或者是不可划出sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//設定actionBar能否跟隨側滑欄移動,如果沒有,則可以去掉setSlidingActionBarEnabled(false);


3、雙側滑欄我們可以通過下面的代碼實現雙側滑欄的效果:
<span style="white-space:pre"></span>// 設定左邊的側滑欄getSlidingMenu().setMode(SlidingMenu.LEFT_RIGHT);getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);setContentView(R.layout.content_frame);getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, new SampleListFragment()).commit();// 設定右邊的側滑欄getSlidingMenu().setSecondaryMenu(R.layout.menu_frame_two);getSlidingMenu().setSecondaryShadowDrawable(R.drawable.shadowright);getSupportFragmentManager().beginTransaction().replace(R.id.menu_frame_two, new SampleListFragment()).commit();


4、設定觸摸模式
通過getSlidingMenu().setTouchModeAbove()可以設定側滑欄的觸摸模式,用下面3個常量值:
SlidingMenu.TOUCHMODE_FULLSCREEN  全螢幕模式,全屏滑動都可開啟


SlidingMenu.TOUCHMODE_MARGIN  側邊模式,只在螢幕側邊滑動才能開啟,中心滑動不能開啟


SlidingMenu.TOUCHMODE_NONE    禁止觸摸模式,不能夠通過觸摸開啟,只能夠通過SlidingMenu().toggle()開啟或者是關閉


5、設定側滑欄顯示動畫通過SlidingMenu.setbehindCanvasTransformer(CanvasTransformer);方法可以設定側滑欄的顯示動畫,參數是一個CanvasTransformer對象。下面是幾個常見的動畫的設定:
摺疊動畫:
new CanvasTransformer() {@Overridepublic void transformCanvas(Canvas canvas, float percentOpen) {canvas.scale(percentOpen, 1, 0, 0);}}


縮放動畫:
new CanvasTransformer() {@Overridepublic void transformCanvas(Canvas canvas, float percentOpen) {float scale = (float) (percentOpen*0.25 + 0.75);canvas.scale(scale, scale, canvas.getWidth()/2, canvas.getHeight()/2);}
上升動畫:
private static Interpolator interp = new Interpolator() {@Overridepublic float getInterpolation(float t) {t -= 1.0f;return t * t * t + 1.0f;}};new CanvasTransformer() {@Overridepublic void transformCanvas(Canvas canvas, float percentOpen) {canvas.translate(0, canvas.getHeight()*(1-interp.getInterpolation(percentOpen)));}}


四、可能出現的問題

Android開源SlidingMenu的使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.