標籤:android style blog http io ar sp java on
Jeff Lee blog: http://www.cnblogs.com/Alandre/ (泥沙磚瓦漿木匠),retain the url when reproduced ! Thanks
:
求資源到首頁上部加群即可。
一. SlidingMenu簡介
github:https://github.com/jfeinstein10/SlidingMenu
官網上面的簡介上翻譯的:
SlidingMenu是能讓開發人員很容易的開發有滑動菜單App(像Google+,YouTube,Facebook)的開源android庫。只要引入這個開源庫的許可代碼,就可以很容易免費的用在你想要滑動菜單的app。如所示:
二.官方小例子
public class SlidingExample extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTitle(R.string.attach); // set the content view setContentView(R.layout.content); // configure the 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); menu.setMenu(R.layout.menu); }}
自然你也可以用xml定義一個slidingMenu
<com.jeremyfeinstein.slidingmenu.lib.SlidingMenu xmlns:sliding="http://schemas.android.com/apk/res-auto" android:id="@+id/slidingmenulayout" android:layout_width="fill_parent" android:layout_height="fill_parent" sliding:viewAbove="@layout/YOUR_ABOVE_VIEW" sliding:viewBehind="@layout/YOUR_BEHIND_BEHIND" sliding:touchModeAbove="margin|fullscreen" sliding:behindOffset="@dimen/YOUR_OFFSET" sliding:behindWidth="@dimen/YOUR_WIDTH" sliding:behindScrollScale="@dimen/YOUR_SCALE" sliding:shadowDrawable="@drawable/YOUR_SHADOW" sliding:shadowWidth="@dimen/YOUR_SHADOW_WIDTH" sliding:fadeEnabled="true|false" sliding:fadeDegree="float" sliding:selectorEnabled="true|false" sliding:selectorDrawable="@drawable/YOUR_SELECTOR"/>
官方文檔翻譯如下:
viewAbove - 在菜單之上的布局引用
viewBehind - 在菜單之下的布局引用
touchModeAbove - 指那一部分螢幕觸摸後視圖顯示
behindOffset - 菜單顯示時,主體顯示多少(單位像素)
behindWidth - 菜單顯示,主體顯示的寬。預設全屏
behindScrollScale - 菜單顯示的滾動設定
shadowDrawable - 滾動陰影設定
shadowWidth - 滾動陰影的寬度
fadeEnabled - 滑動時菜單的是否漸層
fadeDegree - 滑動時的漸層程度
三.實現滑動菜單
主要結構:MainAct為主入口,然後各個fragment實現各自內容動作。
MainAct.java
public class MainAct extends FragmentActivity {private SlidingMenu menu; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.slidingmenu_main); menu = new SlidingMenu(this);menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);menu.setShadowWidthRes(R.dimen.slidingmenu_shadow_width);menu.setShadowDrawable(R.drawable.slidingmenu_shadow);menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);DisplayMetrics dm = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(dm);menu.setFadeDegree(0.35f);menu.setBehindOffset(dm.widthPixels*50/100);menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);menu.setMode(SlidingMenu.LEFT_RIGHT);//這裡模式設定為左右都有菜單,RIGHT顯示右菜單,LEFT顯示左菜單,LEFT_RIGH顯示左右菜單menu.setContent(R.layout.slidingmenu_content);menu.setMenu(R.layout.slidingmenu_menu);menu.setSecondaryMenu(R.layout.slidingmenu_menu_2);menu.setSecondaryShadowDrawable(R.drawable.slidingmenu_shadow_2);getSupportFragmentManager().beginTransaction().replace(R.id.slidingmenu_content, new MainFragment(menu)).commit();//設定首頁面內容getSupportFragmentManager().beginTransaction().replace(R.id.slidingmenu_menu, new MainLeftFragment()).commit();//設定左菜單內容getSupportFragmentManager().beginTransaction().replace(R.id.slidingmenu_menu_2, new MainRightFragment(menu)).commit();//設定右菜單內容 }}
總結:用則簡單則難
Android UI(三)SlidingMenu實現滑動菜單(詳細 官方)