SlidingMenu實現側滑效果


SlidingMenu是前兩年很火的一個第三方側滑項目,目前已經很久沒有再更新過了,目前Google自己也出了一個側滑控件叫做Drawerlayout,很好用,如果想學習可以查看我的相關博客:drawerlayout的使用,不過很多同學還是想用第三方的,那麼幾天就來帶大家學習一下這個三方庫吧。

使用這個三方常用的方式有兩種,一種是直接用代碼創建對象,一種是在佈局文件中使用,今天就分別來演示一遍。在使用前當然是一些準備工作,首先要做的是下載這個第三方庫,如果你不嫌麻煩可以直接從github上面下載:github,當然最後我也會提供類庫給大家,這裏我就以你下載我給的類庫爲演示基礎。

下載完之後找到slidelibrary這個文件夾,他就是類庫的源文件,導入之後和你自己的項目關聯上,如果允許之後出現classnotfand的錯誤那是因爲類庫使用的v4包和你項目使用的V4包不一致導致的,解決辦法就是把自己的v4包覆蓋掉類庫的v4包。準備工作完成之後我們就正式的開始使用了。

首先我們使用代碼來創建,因爲註釋寫的很詳細了,裏面的方法這裏就不再贅述了,先來看Activity代碼:

public class MainActivity extends AppCompatActivity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		// 創建對象
		SlidingMenu smenu = new SlidingMenu(this);
		// 設置出現在左邊還是右邊
		smenu.setMode(SlidingMenu.LEFT);
		// 設置調出slidingmenu的區域
		smenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
		// 設置陰影的寬度
		smenu.setShadowWidth(8);
		smenu.setShadowDrawable(R.drawable.shadow);
		// 設置slidingmenu滑出來時的寬度
		smenu.setBehindOffset(100);
		// 設置剛拉出來的時候顏色,1爲全黑
		smenu.setFadeDegree(0.3f);
		// 添加到Activity上面
		smenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
		smenu.setMenu(R.layout.menu);
		// 關閉監聽
		smenu.setOnClosedListener(new OnClosedListener() {

			@Override
			public void onClosed() {
				Toast.makeText(MainActivity.this, "關閉了", Toast.LENGTH_SHORT).show();

			}
		});
		// 打開監聽
		smenu.setOnOpenedListener(new OnOpenedListener() {

			@Override
			public void onOpened() {
				Toast.makeText(MainActivity.this, "打開了", Toast.LENGTH_SHORT).show();

			}
		});
		// 創建動畫對象設置顯示的時候出現的動畫,這裏我寫的是一個入場動畫
		CanvasTransformer canvasTransformer = new CanvasTransformer() {

			@Override
			public void transformCanvas(Canvas canvas, float percentOpen) {
				float scale = (float) (percentOpen * 0.25 + 0.75);
				canvas.scale(scale, scale, canvas.getWidth() / 2, canvas.getHeight() / 2);
			}
		};
		smenu.setBehindCanvasTransformer(canvasTransformer);
	}

}
基本使用思路就是先創建一個slidingmenu對象,然後對這個對象各種設置,完了之後調用attachToActivity方法使之和本Activity關聯上,然後調用setmenu方法設置slidingmenu的佈局文件,最後設置一些監聽方法和一個打開關閉時的動畫效果。我的slidingmenu佈局文件很簡單就一個imageView,下面來看看這段代碼的運行效果:




XML文件使用

在主佈局文件中代碼如下:

<com.jeremyfeinstein.slidingmenu.lib.SlidingMenu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:sliding="http://schemas.android.com/apk/res-auto"
    android:id="@+id/slidingmenulayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    sliding:behindOffset="100px"
    sliding:behindScrollScale="0.5"
    sliding:fadeDegree="0.3"
    sliding:fadeEnabled="true"
    sliding:selectorDrawable="@drawable/shadow"
    sliding:selectorEnabled="true"
    sliding:shadowDrawable="@drawable/shadow"
    sliding:shadowWidth="8px"
    sliding:touchModeAbove="margin"
    sliding:viewAbove="@layout/above"
    sliding:viewBehind="@layout/menu" />

來看運行效果:

上面我添加一個

 sliding:behindScrollScale="0.5"
所以滑動的位置和slidingmenu顯示的區域成1:2的關係,使用xml來用slidingmenu只需要把主佈局文件裏放一個上面的代碼就夠了,主界面顯示和抽屜佈局顯示是通過:

sliding:viewAbove="@layout/above"
    sliding:viewBehind="@layout/menu" 
這兩行代碼實現的,前一個是設置主界面,後一個是設置抽屜佈局內容的。

掃描關注我的微信公衆號:



ok,slidingmenu的時候大概就是這兩種方式,別的方式也可以不過不推薦使用,如果想最求更好的穩定性請使用Google自帶的drawerlayout。最後附上類庫和demo:

點擊下載

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章