Android: SlidingDrawer(滑动式抽屉)

Android控件之SlidingDrawer(滑动式抽屉)详解与实例

一、简介
  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

posted @ 2013-12-26 22:37  不止所见  阅读(475)  评论(0编辑  收藏  举报