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

  • 相关阅读:
    android开发环境搭建日记和嵌入式Android开发环境初探
    QT210 android2.3 和android4.0 烧写编译日记
    RAM,SRAM,DRAM,SDRAM,DDR RAM,ROM,PROM,EPROM,EEPROM,NAND FLASH,NOR FLASH的区别
    如何修改终端用户名颜色修改为红色(可以自由定制)
    FPGA机器学习之stanford机器学习第三堂2
    FPGA机器学习之stanford机器学习第三堂1
    FPGA机器学习之stanford机器学习第二堂2
    FPGA机器学习之stanford机器学习第二堂1
    FPGA机器学习之stanford机器学习第一堂
    FPGA片外存储器ddr2之DQSn引脚的分析
  • 原文地址:https://www.cnblogs.com/klcf0220/p/3493213.html
Copyright © 2011-2022 走看看