下载SlidingMenu,https://github.com/jfeinstein10/SlidingMenu
导入library
我们项目右键==>Properties==>Android==>Library add 添加第三方项目为依赖
出现这个错误:Found 2 versions of android-support-v4.jar in the dependency list
因为第三方项目中的android-support-v4.jar包和我们项目中的冲突了,使用我们的jar包覆盖第三方项目的就可以了
当前activity继承SlidingFragmentActivity,重写onCreate()方法,
调用setBehidContentView(),设置滑动菜单的布局文件,参数:资源id
获取SlidingMenu对象,通过getSlidingMenu()方法
调用SlidingMenu对象的setMode()方法,设置左边划出,参数:SlidingMenu.LEFT
调用SlidingMenu对象的setBehindWidthRes(),设置菜单的宽度,参数:宽度dimen资源
调用SlidingMenu对象的setShadowDrawable()方法,设置菜单阴影,参数:shape资源文件
shape资源文件,添加根节点<shape>
添加渐变节点,<gradient>,设置开始颜色android:startColor=”#000000”
设置中间颜色,android:centerColor=”2D000000”
设置结束颜色,android:endColor=”5A000000”
调用SlidingMenu对象的setShadowWidth(),设置阴影的宽度,参数:宽度
调用SlidingMenu对象的setTouchModeAbove()方法,设置滑动的范围,
参数:SlidingMenu.TOUCHMODE_FULLSCREEN 全屏
SlidingMenu.TOUCHMODE_NONE 不允许滑动
调用requestWindowFeature(),参数:Window.FEATURE_NO_TITLE,去掉title
创建Fragment
新建一个包xxx.fragment,新建一个MenuFragment,继承v4包里的Fragment
重写onCreate()
重写onCreateView(),传递进来LayoutInflater对象
新建一个布局文件,list_view.xml,里面放一个ListView控件,调用LayoutInflater对象inflate()方法,转成View对象
重写onActivityCreated(),当activity创建的时候
调用View对象的findViewById(),获取ListView对象
调用ListView对象的setAdapter()方法,设置适配器,参数:Adapter对象
获取ArrayAdapter对象,构造方法,参数:上下文,布局资源,文本控件id,数据List
上下文(getActivity()),布局资源使用系统的android.R.layout.simple_list_item1
文本id android.R.id.text1,数据
替换布局
在activity中,获取Fragment对象,把menu布局替换成这个Fragmenu
获取Fragment对象,new MenuFragment()
调用getSuportFragment().beginTransaction().replace().commit()来替换
replace()方法,参数:布局id,fragment对象
MainActivity.java
package com.qingguow.news; import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu; import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity; import com.qingguow.news.fragment.MenuFragment; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.Window; public class MainActivity extends SlidingFragmentActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); //设置滑动菜单 setBehindContentView(R.layout.menu); setContentView(R.layout.activity_main); SlidingMenu sm=getSlidingMenu(); sm.setMode(SlidingMenu.LEFT); sm.setBehindWidth(200); sm.setShadowDrawable(R.drawable.shape); sm.setShadowWidth(5); sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); //替换fragemnt MenuFragment menuFragment=new MenuFragment(); getSupportFragmentManager().beginTransaction().replace(R.id.ll_left_menu, menuFragment).commit(); } }
MenuFragment.java
package com.qingguow.news.fragment; import java.util.ArrayList; import java.util.List; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ListAdapter; import android.widget.ListView; import com.qingguow.news.R; public class MenuFragment extends Fragment { private View view; //加载布局文件 @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view = inflater.inflate(R.layout.list_view, null); return view; } //设置listview数据 @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); ListView listview = (ListView) view.findViewById(R.id.lv_menu); List<String> data=new ArrayList<String>(); data.add("新闻"); data.add("发现"); data.add("关注"); ListAdapter adapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, android.R.id.text1, data); listview.setAdapter(adapter); } }