【Android界面實現】SlidingMenu最新版本號使用具體解釋
轉載請註明出處:http://blog.csdn.net/zhaokaiqiang1992
在非常久之前的一篇文章中,簡單的介紹了一下開源項目SlidingMenu控件的使用,這一篇文章,將比較具體的介紹最新版本號的SlidingMenu控件的用法。
SlidingMenu的github地址:https://github.com/jfeinstein10/SlidingMenu
將SlidingMenu整合到自己的項目之中
我們在使用開源的項目之前,都須要先將項目作為資源引入到我們當前的項目之中。在整合之前,先將github上項目的演示樣例代碼下載下來。導入到eclipse其中。關於將外部項目導入當前項目。有兩種做法。
(1)將資源項目作為library設置到我們的項目中,就像是演示樣例代碼中的ExampleListctivity一樣,例如以下圖所看到的。
有一點須要註意一下。由於在SlidingMenu演示樣例代碼裏面用到了ActionBarSharlock這個依賴project。因此,我們不光須要SlidingMenu的代碼。還須要ActionBarSharlockproject的資源項目。ActionBarSharlock的github項目地址是https://github.com/JakeWharton/ActionBarSherlock 大家能夠自行下載。
在設置好依賴project之後,我們就能夠使用SlidingMenu了。
(2)除了採用上面這樣的依賴project的方法,我們還能夠直接將依賴project,也就是library項目裏面的代碼,直接復制到我們的目標項目裏面。我個人更喜歡這樣的方法,盡管這樣會添加project的安裝包的體積,可是。對於項目的管理來說,更加的方便。
在這個項目中。我們將以下的這個文件復制到我們的項目裏面就能夠了。
加入SlidingMenu控件的方式
(1)繼承自SlidingFragmentActivity。假設是採用這樣的方式的話。我們的Activity須要繼承自SlidingFragmentActivity。SlidingFragmentActivity是SlidingMenu裏面的一個類。繼承自它,我們能夠擁有一個SlidingMenu控件。
假設我們想用這個方式,能夠參考以下的代碼。
package com.example.slidingmenudemo; import android.os.Bundle; import android.support.v4.app.FragmentTransaction; import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu; import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity; /** * 繼承自SlidingFragmentActivity的側滑欄實現,能夠實現側滑欄是fragment的側滑欄的效果 * * @author zhaokaiqiang * @see http://blog.csdn.net/zhaokaiqiang1992 * */ public class MethodOneActivity extends SlidingFragmentActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 設置主界面的布局文件 setContentView(R.layout.activity_method_one); // 設置存放側滑欄的容器的布局文件 setBehindContentView(R.layout.frame_menu); // 將側滑欄的fragment類填充到側滑欄的容器的布局文件裏 FragmentTransaction transaction = getSupportFragmentManager() .beginTransaction(); SampleListFragment fragment = new SampleListFragment(); transaction.replace(R.id.menu_frame, fragment); transaction.commit(); // 獲取到SlidingMenu對象。然後設置一些常見的屬性 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); } }
使用這樣的實現方式。我們的側滑欄是使用一個Fragment實現的。通過setBehindContentView()方法,我們能夠設置放置側滑欄布局的容器。這個容器是一個很easy的布局文件,一般來說比較固定,比方像以下這樣就能夠
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/menu_frame" android:layout_width="match_parent" android:layout_height="match_parent" />
在這裏面,一個設置了id的FragmentLayout布局就可以。這樣我們就能夠通過transaction.replace(R.id.menu_frame, fragment);方法將我們側滑欄的Fragment填充到SlidingMenu之中。
由於SlidingFragmentActivity裏面已經集成了一個SlidingMenu。因此。我們通過getSlidingMenu()就能夠獲取到一個SilidingMenu對象,然後象上面的代碼一樣設置經常使用的屬性就能夠了。
通過這樣的方式加入SlidingMenu很的方便,可是我們必須繼承自SlidingFeagmentActivity,不免有一些限制。
(2)繼承自FragmentActivity
除了繼承SlidingMenu自帶的Activity之外,我們還能夠直接繼承自FragmentActivity,假設要通過這樣的方式。我們能夠參考以下的代碼實現。
package com.example.slidingmenudemo; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu; /** * 繼承自FragmentActivity的側滑欄實現,能夠實現側滑欄是fragment的側滑欄的效果 * * @author zhaokaiqiang * @see http://blog.csdn.net/zhaokaiqiang1992 */ public class MethodTwoActivity extends FragmentActivity { private SlidingMenu menu; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_method_two); menu = new SlidingMenu(this); menu.setShadowWidth(0); menu.setShadowDrawable(R.drawable.shadow); menu.setBehindOffset(100); menu.setFadeDegree(0.35f); menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT); menu.setMenu(R.layout.frame_menu); getSupportFragmentManager().beginTransaction() .replace(R.id.menu_frame, new SampleListFragment()).commit(); } }
通過這樣的方式集成的話,我們須要自定義SlidingMenu。然後通過attachToActivity。將SlidingMenu連接到我們的FragmentActivity之上,setMenu()方式設置的是我們的側滑欄的容器的布局。和上面的第一種方法是一樣的。
其它經常使用屬性
(1)雙側滑欄 我們能夠通過以下的代碼實現雙側滑欄的效果@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //設置左邊的側滑欄 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(); }
(2)設置觸摸模式 通過getSlidingMenu().setTouchModeAbove()能夠設置側滑欄的觸摸模式,用以下3個常量值
SlidingMenu.TOUCHMODE_FULLSCREEN 全屏幕模式。全屏滑動都可打開
SlidingMenu.TOUCHMODE_MARGIN 側邊模式,僅僅在屏幕側邊滑動才幹打開,中心滑動不能打開
SlidingMenu.TOUCHMODE_NONE 禁止觸摸模式,不可以通過觸摸打開。僅僅可以通過SlidingMenu().toggle()打開或者是關閉
(3)設置側滑欄顯示動畫 通過SlidingMenu.setBehindCanvasTransformer(CanvasTransformer);方法能夠設置側滑欄的顯示動畫,參數是一個CanvasTransformer對象。以下是幾個常見的動畫的設置折疊動畫
new CanvasTransformer() { @Override public void transformCanvas(Canvas canvas, float percentOpen) { canvas.scale(percentOpen, 1, 0, 0); } }
放縮動畫
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); } }
上升動畫
private static Interpolator interp = new Interpolator() { @Override public float getInterpolation(float t) { t -= 1.0f; return t * t * t + 1.0f; } }; new CanvasTransformer() { @Override public void transformCanvas(Canvas canvas, float percentOpen) { canvas.translate(0, canvas.getHeight()*(1-interp.getInterpolation(percentOpen))); } }
其它的很多其它屬性。請自己查閱演示樣例代碼。
【Android界面實現】SlidingMenu最新版本號使用具體解釋