SlidingDrawer(滑動式抽屜)隱藏屏外的內容,並容許用戶拖拽一個handle以顯示隱藏的內容。SlidingDrawer能夠在垂直或者水平使用。它由兩個子視圖組成:一個是用戶拖拽的handle(柄),另外一個是隨着拖動變化的 content(內容)。SlidingDrawer應看成爲內部佈局的覆蓋來使用,也就是說SlidingDrawer內部應該使用 FrameLayout或RelativeLayout佈局。SlidingDrawer的大小決定了其內容顯示時所佔空間的大小,因此它的尺寸通常定義 爲match_parent。在XML佈局中SlidingDrawer必須指定handle和content的id:java
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <!-- 能夠設置顯示的方向 --> <SlidingDrawer android:id="@+id/slidingdraw" android:layout_width="match_parent" android:layout_height="match_parent" android:content="@+id/content" android:orientation="horizontal" android:handle="@+id/handle" > <ListView android:id="@id/content" android:layout_width="match_parent" android:layout_height="match_parent" /> <ImageView android:id="@id/handle" android:layout_width="88dip" android:layout_height="44dip" android:contentDescription="TODO" android:src="@drawable/ic_launcher" /> </SlidingDrawer> </LinearLayout>
public class MainActivity extends Activity { //聲明SlidingDrawer private SlidingDrawer mDrawer; private ImageView mImageView; private ListView lvNews; private String news[] = { "互聯網產品中的情感化設計" , "有效導向社交產品的商業價值" , "移動開發者:得90後者得天下" , "用戶體驗:從App的加載頁面說開去" , "用扁平化的界面設計吸引用戶" , "實體與數字世界的交集" , "網絡社區用戶成長的5個思考模式" , "十大值得關注的傳統企業電商" , "2013年十大熱點技術發展趨勢" , "瞭解產品的開發環節:環形設計論" , "客戶忠誠度的四個層次" , "在手機背面貼張'紙'就能輕鬆充電" , "互聯網公司是怎樣激發你的消費慾望的" , "高效工做的信息蒐集及管理術" }; @ Override protected void onCreate ( Bundle savedInstanceState ) { super.onCreate ( savedInstanceState ); setContentView ( R.layout.activity_main ); //得到SlidingDrawer mDrawer = ( SlidingDrawer ) findViewById ( R.id.slidingdraw ); mImageView = ( ImageView ) findViewById ( R.id.handle ); //獲取ListView並填充內容 lvNews = ( ListView ) findViewById ( R.id.content ); lvNews.setAdapter ( new ArrayAdapter < String > ( this , android.R.layout.simple_list_item_1 , news ) ); //監聽打開抽屜事件 mDrawer.setOnDrawerOpenListener ( new SlidingDrawer.OnDrawerOpenListener ( ) { @ Override public void onDrawerOpened ( ) { mImageView.setImageResource ( R.drawable.ic_launcher ); } } ); //監聽關閉抽屜事件 mDrawer.setOnDrawerCloseListener ( new SlidingDrawer.OnDrawerCloseListener ( ) { @ Override public void onDrawerClosed ( ) { mImageView.setImageResource ( R.drawable.ic_launcher ); } } ); } }
推薦一篇大神自定義的SlidingDrawer android
屬性網絡
android:allowSingleTap:指示是否能夠經過handle打開或關閉ide
android:animateOnClick:指示是否當使用者按下手柄打開/關閉時是否該有一個動畫。佈局
android:content:隱藏的內容動畫
android:handle:handle(手柄)this
方法spa
animateClose():關閉時實現動畫。.net
close():即時關閉設計
getContent():獲取內容
isMoving():指示SlidingDrawer是否在移動。
isOpened():指示SlidingDrawer是否已所有打開
lock():屏蔽觸摸事件。
setOnDrawerCloseListener(SlidingDrawer.OnDrawerCloseListener onDrawerCloseListener):SlidingDrawer關閉時調用
unlock():解除屏蔽觸摸事件。
toggle():切換打開和關閉的抽屜SlidingDrawer。