1,建立一個抽屜DrawerLayout,在V4包下android.support.v4.widget.DrawerLayout,在要設置抽屜的佈局中設置android:layout_gravity="right|left"屬性,看效果:html
2,在主Activity中java
Step1:找到DrawerLayout控件android
1 //找到DrawerLayout的控件 2 dl_drawerlayout_second = (DrawerLayout) findViewById(R.id.dl_drawerlayout_second);
Step2:對DrawerLayout控件進行監聽,且設置一個成員變量boolean類型的flag標記,用於記錄抽屜的開關,這裏要提一下,用代碼打開抽屜的方法是dl_drawerlayout_second.openDrawer(Gravity.RIGHT);裏面的參數是根據你抽屜的位置,代碼以下:ide
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
//設置監聽DrawerLayout
dl_drawerlayout_second.setDrawerListener(
new
DrawerListener() {
@Override
public
void
onDrawerStateChanged(
int
arg0) {
// TODO Auto-generated method stub
}
@Override
public
void
onDrawerSlide(View arg0,
float
arg1) {
// TODO Auto-generated method stub
}
@Override
public
void
onDrawerOpened(View arg0) {
// TODO Auto-generated method stub
flag =
true
;
}
@Override
public
void
onDrawerClosed(View arg0) {
// TODO Auto-generated method stub
flag =
false
;
}
});
|
Step3:當你打開抽屜後,在抽屜下面展現的組件中設置點擊觸摸事件佈局
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
//設置手勢問題
lv_second_listView_content.setOnTouchListener(
new
OnTouchListener() {
@Override
public
boolean
onTouch(View v, MotionEvent event) {
//進行判斷
if
(SecondActivity.instance.getFlag()) {
//表示抽屜被打開
event.setAction(MotionEvent.ACTION_CANCEL);
//將全部分發的事件對象都取消掉
}
return
false
;
}
});
|
Step4,還有一種簡單的思想就是在佈局文件中將咱們的DrawerLayout添加一個點擊事件,但對這個點擊事件不作處理,這樣就不會產生抽屜被擊穿的效果了(推薦使用上面介紹的這種方式,這樣邏輯性更強)。spa