SlidingMenu開源框架是用的比較多的框架,到處都能看到
github地址 https://github.com/jfeinstein10/SlidingMenu
鑑於github原來給出的例子,代碼太多,在此精簡了一下,旨在便於小白用戶2分鐘內讀懂代碼學會使用方法
廢話少說,先看本demo的效果
MainActivity
package com.example.slidingmenu;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
import com.example.slidingmenu.fragment.LeftMenuFragment;
import com.example.slidingmenu.fragment.ContentFragment;
import com.example.slidingmenu.fragment.RightMenuFragment;
import com.example.slidingmenu.R;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;
public class MainActivity extends SlidingFragmentActivity {
private SlidingMenu mSlidingMenu;
@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle("Home");
// setTitle(R.string.sliding_title);
setContentView(R.layout.frame_content);
//set the Behind View
setBehindContentView(R.layout.frame_left_menu);
// customize the SlidingMenu
mSlidingMenu = getSlidingMenu();
mSlidingMenu.setMode(SlidingMenu.LEFT_RIGHT);//設置左右都可以劃出SlidingMenu菜單
mSlidingMenu.setSecondaryMenu(R.layout.frame_right_menu); //設置右側菜單的佈局文件
mSlidingMenu.setSecondaryShadowDrawable(R.drawable.drawer_shadow);
// mSlidingMenu.setShadowWidth(5);
// mSlidingMenu.setBehindOffset(100);
mSlidingMenu.setShadowDrawable(R.drawable.drawer_shadow);//設置陰影圖片
mSlidingMenu.setShadowWidthRes(R.dimen.shadow_width); //設置陰影圖片的寬度
mSlidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset); //SlidingMenu劃出時主頁面顯示的剩餘寬度
mSlidingMenu.setFadeDegree(0.35f);
//設置SlidingMenu 的手勢模式
//TOUCHMODE_FULLSCREEN 全屏模式,在整個content頁面中,滑動,可以打開SlidingMenu
//TOUCHMODE_MARGIN 邊緣模式,在content頁面中,如果想打開SlidingMenu,你需要在屏幕邊緣滑動纔可以打開SlidingMenu
//TOUCHMODE_NONE 不能通過手勢打開SlidingMenu
mSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
//設置 SlidingMenu 內容
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.left_menu, new LeftMenuFragment());
fragmentTransaction.replace(R.id.right_menu, new RightMenuFragment());
fragmentTransaction.replace(R.id.content, new ContentFragment());
fragmentTransaction.commit();
//使用左上方icon可點,這樣在onOptionsItemSelected裏面纔可以監聽到R.id.home
getActionBar().setDisplayHomeAsUpEnabled(true);
// getActionBar().setLogo(R.drawable.ic_logo);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
toggle(); //動態判斷自動關閉或開啓SlidingMenu
// getSlidingMenu().showMenu();//顯示SlidingMenu
// getSlidingMenu().showContent();//顯示內容
return true;
case R.id.action_refresh:
Toast.makeText(getApplicationContext(), R.string.refresh, Toast.LENGTH_SHORT).show();
return true;
case R.id.action_person:
if(mSlidingMenu.isSecondaryMenuShowing()){
mSlidingMenu.showContent();
}else{
mSlidingMenu.showSecondaryMenu();
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}