SlidingMenu

来源:互联网 发布:二战德军重要战役数据 编辑:程序博客网 时间:2024/04/30 08:11

侧边栏的实现效果,有许多方式。

我这里使用了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的layoutmenu.setMenu(R.layout.slide_menu);// 设置menu的背景menu.setBackgroundColor(getResources().getColor(android.R.color.background_light));// 获取menu的layoutView 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>

slidingmenu_offset 和 shadow_width:

在values中的dimens文件中加入:

  <dimen name="slidingmenu_offset">60dp</dimen>    <dimen name="shadow_width">15dp</dimen>

shadow:

在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();

showMenu()的方法,在点击事件中能监听到,但是在监听menu的时候,调用的时候只能显示,不能关闭。

另外一种方法,调用切换方法:

// 切换侧边栏状态menu.toggle();


1 0
原创粉丝点击