一、简介
SlidingDrawer隐藏屏外的内容,并允许用户通过handle以显示隐藏内容。它可以垂直或水平滑动,它有俩个View组成,其一是可以拖动的handle,其二是隐藏内容的View.它里面的控件必须设置布局,在布局文件中必须指定handle和content.
左右拉抽屉的效果,将 SlidingDrawer属性设置为android:orientation="horizontal"即可。
<SlidingDrawer android:id="@+id/slidingDrawer1" android:layout_width="match_parent" android:layout_height="match_parent" android:content="@+id/content" android:handle="@+id/handle" > <Button android:id="@+id/handle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/shake_report_dragger_up" /> <LinearLayout android:id="@+id/content" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#f9f9f9" > <ImageView android:layout_width="match_parent" android:layout_height="wrap_content" android:scaleType="fitXY" android:src="@drawable/shake_line_up" /> </LinearLayout> </SlidingDrawer>
二、重要属性
android:allowSingleTap:指示是否可以通过handle打开或关闭
android:animateOnClick:指示是否当使用者按下手柄打开/关闭时是否该有一个动画。
android:content:隐藏的内容
android:handle:handle(手柄)
三、重要方法
animateClose():关闭时实现动画。
close():即时关闭
getContent():获取内容
isMoving():指示SlidingDrawer是否在移动。
isOpened():指示SlidingDrawer是否已全部打开
lock():屏蔽触摸事件。
setOnDrawerOpenListener(new OnDrawerOpenListener():SlidingDrawer打开时调用。
setOnDrawerCloseListener(new onDrawerCloseListener):SlidingDrawer关闭时调用。
SlidingDrawer.OnDrawerScrollListener:SlidingDrawer滑动时调用。
unlock():解除屏蔽触摸事件。
toggle():切换打开和关闭的抽屉SlidingDrawer。
private SlidingDrawer mDrawer; private Button mDrawerBtn; mDrawer = (SlidingDrawer) findViewById(R.id.slidingDrawer1); mDrawerBtn = (Button) findViewById(R.id.handle); mDrawer.setOnDrawerOpenListener(new OnDrawerOpenListener(){ public void onDrawerOpened(){ mDrawerBtn.setBackgroundDrawable(getResources().getDrawable(R.drawable.shake_report_dragger_down)); TranslateAnimation titleup = new TranslateAnimation( Animation.RELATIVE_TO_SELF,0f, Animation.RELATIVE_TO_SELF,0f, Animation.RELATIVE_TO_SELF,0f, Animation.RELATIVE_TO_SELF,-1.0f); titleup.setDuration(200); titleup.setFillAfter(true); } }); /* 设定SlidingDrawer被关闭的事件处理 */ mDrawer.setOnDrawerCloseListener(new OnDrawerCloseListener(){ public void onDrawerClosed(){ mDrawerBtn.setBackgroundDrawable(getResources().getDrawable(R.drawable.shake_report_dragger_up)); TranslateAnimation titledn = new TranslateAnimation( Animation.RELATIVE_TO_SELF,0f, Animation.RELATIVE_TO_SELF,0f, Animation.RELATIVE_TO_SELF,-1.0f, Animation.RELATIVE_TO_SELF,0f); titledn.setDuration(200); titledn.setFillAfter(false); } });
还有注意的是: SlidingDrawer should be used as an overlay inside layouts. This means SlidingDrawer should only be used inside of a FrameLayout or a RelativeLayout for instance, 如果显示的时候不正常,考虑上面的原因。
This class was deprecated in API level 17,就是活这个类在Android API 17以上是不建议支持使用的了。
官方链接:http://developer.android.com/reference/android/widget/SlidingDrawer.html
参考链接:http://www.apkbus.com/forum.php?mod=viewthread&tid=143669