SlidingMenu框架 加载ListView布局menu
很多时候,我们只顾着羡慕别人,以为自己做不到,于是做都不去做,了解都不去了解
···························
===================================================================================
#运用#
现在类似于QQ,乃至我们安卓手机内置的手势滑动调出的菜单已经不在少数,除了这种酷炫的效果以外,也极大地提高了用户体验,以及大大节省了空间,也许我们还做不到那么好看,那么今天我们来实现基本的slidingmenu,也许你会说学习它需要用到GestureDetector还不会处理。那没有关系,网上现在有写好的SlidingMenu,重点是看我们怎么配置,和使用,我在使用的时候也遇到了不少麻烦,那么现在就从开始讲起吧
===================================================================================
#导入slidingmenu包#
附件里面上传了slidingmenu.jar 大家自行下载导入libs
万事俱备只欠东风
=================================================================================
加入slidingmenu非常简单
首先直接在oncreate里面创建:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /* * slidingmenu配置 */ SlidingMenu menu = new SlidingMenu(this); menu.setMode(SlidingMenu.LEFT);//设置为左边划出 // 设置触摸屏幕的模式 menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//全屏手势划出都可以调出slidingmenu menu.setShadowWidthRes(R.dimen.shadow_width);//设置阴影效果范围 menu.setShadowDrawable(R.drawable.shadow);//阴影效果 // 设置滑动菜单视图的宽度 menu.setBehindOffsetRes(R.dimen.slidingmenu_offset); // menu.setBehindWidth(200); // 设置渐入渐出效果的值 menu.setFadeDegree(0.35f); menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT); // 为侧滑菜单设置布局 menu.setMenu(getLeftMenu()); }
最后一句setMenu是得到配置好的View
当然也有另一种方法,就是手动配置好要加载的布局,比如
然后写成menu.setMenu(R.layout.left_menu);
这样就直接加载你已经配置好的布局文件了,显示也显示出来了
但是一旦你在代码中向添加xml什么东西,menu并不会响应,也就是说不会显示出来,这样得到的只是一个死布局,因为我在做的时候想要滑出的是一个ListView,事实上,很多滑出菜单,QQ,微信出来都很多基本是Listview,但是刚开始不知道,写成死布局了,之后在代码里编辑ListView怎么都不响应,网上查到怎么配置listview 的SlidingMenu方法基本没有,只是在教怎么配置slidingmenu,也没有人用的动态布局。因此后面问了大神才知道自己把布局写死了。加上getMenu的方法,动态编辑ListView,现在menu的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" > <ListView android:id="@+id/left_menu_listview" android:layout_width="match_parent" android:layout_height="wrap_content" > </ListView> </LinearLayout>
布局预览:
=================================================================================
【编辑ListView】
public View getLeftMenu() { //从主布局文件绑定的Activity调用另一个布局文件必须调用LayoutInflater LayoutInflater inflater = getLayoutInflater(); //得到menu的View View v = inflater.inflate(R.layout.left_menu, null); ListView listview = (ListView) v.findViewById(R.id.left_menu_listview); listview.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, getData())); listview.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { //监听listview item 点击 } }); return v; } private List<String> getData() { List<String> data = new ArrayList<String>(); data.add("测试数据1"); data.add("测试数据2"); data.add("测试数据3"); data.add("测试数据4"); return data; }
实现效果整体如下:
链接有整个项目工程文件,大家下载这个demo可以深入剖析,参考