android 的 launcher 有一个抽屉效果,可以有拉出和关闭的效果. 这里主要讨论如何实现这种效果.
第一步, 将slidingdraw 控件添加到相关的layout中.代码如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<SlidingDrawer android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:handle="@+id/handle" android:content="@+id/content">
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/handle" android:background="@drawable/handle" android:textSize="20dp"></Button>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:orientation="vertical" android:id="@+id/content" android:layout_h eight="wrap_content">
</LinearLayout>
</SlidingDrawer>
</LinearLayout>
有几个属性要注意, 先说slidingdrawer的属性.
android:handle="@+id/handle" 这个属性指定的是那一个控件的相应将启动这个SlidingDraw 这里是一个Button控件
android:content="@+id/content" 这个属性指定的SlidingDrawer的内容,若是SlidingDraw启动后, 应该调出那个内容,这里是一个linelayout
除此之外, Button里面设置了一个selector, android:background="@drawable/handle", 这样在不同的响应中就有不同的背景
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false" android:state_enabled="true" android:drawable="@drawable/tray_handle_normal" />
<item android:state_pressed="true" android:drawable="@drawable/tray_handle_pressed" />
<item android:state_focused="true" android:state_enabled="true" android:drawable="@drawable/tray_handle_selected" />
<item android:state_enabled="true" android:drawable="@drawable/tray_handle_normal" />
<item android:state_focused="true" android:drawable="@drawable/tray_handle_selected" />
</selector>