侧边栏的实现效果,有许多方式。
我这里使用了github上的开源项目,首先要导入往开发工具中导入library包。
点击下载
也可以直接去下载源文件:
https://github.com/jfeinstein10/SlidingMenu
在界面的oncreate()方法中,加入侧边栏:
// 侧边栏 menu = new SlidingMenu(this); // 设置滑动方向 menu.setMode(SlidingMenu.LEFT); // 设置监听开始滑动的触碰范围 menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); // 设置边缘阴影的宽度,通过dimens资源文件中的ID设置 menu.setShadowWidthRes(R.dimen.shadow_width); // 设置边缘阴影的颜色/图片,通过资源文件ID设置 menu.setShadowDrawable(R.drawable.shadow); // 设置menu全部打开后,主界面剩余部分与屏幕边界的距离,通过dimens资源文件ID设置 menu.setBehindOffsetRes(R.dimen.slidingmenu_offset); // 设置是否淡入淡出 menu.setFadeEnabled(true); // 设置淡入淡出的值,只在setFadeEnabled设置为true时有效 menu.setFadeDegree(0.35f); // 将menu绑定到Activity,同时设置绑定类型 menu.attachToActivity(this, SlidingMenu.SLIDING_WINDOW); // 设置menu的layout menu.setMenu(R.layout.slide_menu); // 设置menu的背景 menu.setBackgroundColor(getResources().getColor( android.R.color.background_light)); // 获取menu的layout View menuroot = menu.getMenu();
slide_menu:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="240dip" android:layout_height="fill_parent" android:background="@drawable/bitmap_book_read_chapterlist_repeat" android:orientation="vertical" > <RelativeLayout android:layout_width="240dip" android:layout_height="50.0dip" > <ImageView android:id="@+id/img_head" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:src="@drawable/ic_launcher" /> <TextView android:id="@+id/tv_useName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/img_head" android:layout_marginLeft="28dp" android:layout_toRightOf="@+id/img_head" android:text="会飞的鲨鱼" android:textColor="@android:color/white" /> <ImageView android:id="@+id/img_vip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_marginLeft="16dp" android:layout_toRightOf="@+id/tv_useName" android:src="@drawable/ic_launcher" /> </RelativeLayout> <TextView android:layout_width="240dip" android:layout_height="28.0dip" android:background="#ff313131" android:gravity="center_vertical" android:paddingLeft="15.0dip" android:text="分类" android:textColor="#ff959595" android:textSize="14.0sp" /> <TextView android:id="@+id/tv_contacts" android:layout_width="240dip" android:layout_height="50.0dip" android:background="@drawable/selector_category_item" android:clickable="true" android:drawableLeft="@drawable/ic_category_mark" android:drawablePadding="1.0dip" android:gravity="center_vertical" android:paddingLeft="15.0dip" android:paddingRight="10.0dip" android:text="最近联系人" android:textColor="#ff959595" android:textSize="16.0sp" /> <View android:layout_width="240dip" android:layout_height="2.0dip" android:background="@drawable/ic_shelf_category_divider" /> <TextView android:id="@+id/tv_neighborinfor" android:layout_width="240dip" android:layout_height="50.0dip" android:background="@drawable/selector_category_item" android:clickable="true" android:drawableLeft="@drawable/ic_category_mark" android:drawablePadding="1.0dip" android:gravity="center_vertical" android:paddingLeft="15.0dip" android:paddingRight="10.0dip" android:text="附近信息" android:textColor="#ff959595" android:textSize="16.0sp" /> <View android:layout_width="240dip" android:layout_height="2.0dip" android:background="@drawable/ic_shelf_category_divider" /> <TextView android:id="@+id/tv_checktime" android:layout_width="240dip" android:layout_height="50.0dip" android:background="@drawable/selector_category_item" android:clickable="true" android:drawableLeft="@drawable/ic_category_mark" android:drawablePadding="1.0dip" android:gravity="center_vertical" android:paddingLeft="15.0dip" android:paddingRight="10.0dip" android:text="签到" android:textColor="#ff959595" android:textSize="16.0sp" /> <View android:layout_width="240dip" android:layout_height="2.0dip" android:background="@drawable/ic_shelf_category_divider" /> <TextView android:id="@+id/tv_setting" android:layout_width="240dip" android:layout_height="50.0dip" android:background="@drawable/selector_category_item" android:clickable="true" android:drawableLeft="@drawable/ic_category_mark" android:drawablePadding="1.0dip" android:gravity="center_vertical" android:paddingLeft="15.0dip" android:paddingRight="10.0dip" android:text="设置" android:textColor="#ff959595" android:textSize="16.0sp" /> <View android:layout_width="240dip" android:layout_height="2.0dip" android:background="@drawable/ic_shelf_category_divider" /> </LinearLayout>
在values中的dimens文件中加入:
<dimen name="slidingmenu_offset">60dp</dimen> <dimen name="shadow_width">15dp</dimen>
在drawable中加入文件:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <gradient android:endColor="#33000000" android:centerColor="#11000000" android:startColor="#00000000" /> </shape>
注意:
1.侧边栏的显示和关闭:
// 点击后,显示或者隐藏侧边栏 menu.showMenu();
另外一种方法,调用切换方法:
// 切换侧边栏状态 menu.toggle();