1.在GitHup上下载SlidingMenu,将slidingmenu依赖工程
注意:使用Eclipse的注意:
当前项目右键点击,点击 Properties——》Android,依赖于SlidingMenu
这里不能勾选Is Library,否则程序无法运行,会一直报一个错
只导入SlidingMenu.jar,会报找不到文件的错误
当前项目和导入SlidingMenu的V4包冲突,删除一个,再从另一个中复制过去,保证两个项目的V4包版本一致即可
以下是代码:
第一种,直接继承Activity,此时的SlidingMenu是一个View
侧滑布局 leftmenu.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="Hello Sliding Menu!"
android:textColor="@android:color/holo_red_dark"/>
</LinearLayout>
MainActivity
package com.example.slidingmenu1;
import android.app.Activity;
import android.os.Bundle;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 创建slidingmenu
// java.lang.RuntimeException: Unable to start activity ComponentInfo
// {com.example.day02_slidingmenu/com.example.day02_slidingmenu.MainActivity}:
// java.lang.NumberFormatException: Invalid int: "@2131231002"
// 特别注意:上下文
// this,和getApplicationContext(),这里有点特殊
SlidingMenu menu = new SlidingMenu(getApplicationContext());
// 设置菜单位置 左边
menu.setMode(SlidingMenu.LEFT);
// 设置触摸屏幕的模式
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);// 屏幕边缘滑动启用侧滑菜单
menu.setShadowWidthRes(R.dimen.shadow_width);// 阴影宽度
menu.setShadowDrawable(R.drawable.shadow);// 阴影图片
// 设置滑动菜单视图的宽度
menu.setBehindOffsetRes(R.dimen.slidingmenu_offeset);
// 设置渐入渐出效果的值
menu.setFadeDegree(0.35f);
// 为侧滑菜单设置布局
//可以改为------------------------------------->View v = View.inflate(this,R.layout.leftmenu,null);
//--------------------------------------------->menu.setmenu(view);
//--------------------------------------------->可以在view里设置数据
menu.setMenu(R.layout.leftmenu);
// 把滑动菜单添加进所有的activity中,
// SlidingMenu.SLIDING_WINDOW:菜单拉开后高度是全屏的
// SlidingMenu.SLIDING_CONTENT:菜单拉开后高度是不包含Title/ActionBar的内容区域
menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
}
}
//第二种,Sliding Menu是一个Fragment,建议使用第二种,直接继承
SlidingFragmentActivity
侧滑菜单容器 slidingmenu.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/slidingmenu"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
</LinearLayout>
侧滑菜单内容 fragment.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="slidingmenu"
/>
</LinearLayout>
MyFragment.java
package com.example.slidingmenu2;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class MyFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragmet,container,false);
}
}
MainAcitvity.java
package com.example.slidingmenu2;
import android.os.Bundle;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;
public class MainActivity extends SlidingFragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
show();
}
private void show(){
//获得侧滑菜单
SlidingMenu menu = getSlidingMenu();
menu.setMode(SlidingMenu.LEFT);//模式左
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);//触摸模式
menu.setBehindOffset(120);//侧滑偏移
//设置侧滑菜单容器
setBehindContentView(R.layout.slidingmenu);
//侧滑菜单内容
MyFragment fragment = new MyFragment();
//侧滑菜单内容添加到容器
getSupportFragmentManager().beginTransaction().replace(R.id.slidingmenu
,fragment,"fragment").commit();
}
}