zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    processon--工作中画业务流程图很好的网站,欢迎推荐
    项目中关于RPC 和rocketMQ使用场景的感受
    如何永久激活(破解) IntelliJ IDEA 2018.2
    js生成二维码
    序列化反序列化
    bootstrap-treeview分级展示列表树的实现
    关于redis分布式锁实现原理
    LocalDate
    html css javascript mysql php学习总结
    JQuery中$.ajax()方法参数详解
  • 原文地址:https://www.cnblogs.com/klcf0220/p/3493213.html
Copyright © 2011-2022 走看看