Skip to content

Commit 14e5d33

Browse files
author
jfeinstein10
committed
Can now enable and disable the sliding ActionBar
1 parent 60028d2 commit 14e5d33

File tree

8 files changed

+91
-36
lines changed

8 files changed

+91
-36
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<shape xmlns:android="http://schemas.android.com/apk/res/android"
3+
android:shape="rectangle" >
4+
5+
<gradient
6+
android:endColor="#FF000000"
7+
android:startColor="#00000000" />
8+
9+
</shape>

library/res/layout/shadow.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
3+
android:layout_width="30dp"
4+
android:layout_height="match_parent"
5+
android:src="@drawable/defaultshadow" />

library/res/values/attrs.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
</attr>
3232
<attr name="shadowDrawable" format="reference" />
3333
<attr name="shadowWidth" format="dimension" />
34+
<attr name="behindFadeEnabled" format="boolean" />
35+
<attr name="behindFadeDegree" format="float" />
3436
</declare-styleable>
3537

3638
</resources>

library/src/com/slidingmenu/lib/app/SlidingActivity.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package com.slidingmenu.lib.app;
22

3+
import android.app.Activity;
34
import android.os.Bundle;
45
import android.view.KeyEvent;
56
import android.view.View;
67
import android.view.ViewGroup.LayoutParams;
78

8-
import com.actionbarsherlock.app.SherlockActivity;
99
import com.slidingmenu.lib.SlidingMenu;
1010

11-
public class SlidingActivity extends SherlockActivity implements SlidingActivityBase {
11+
public class SlidingActivity extends Activity implements SlidingActivityBase {
1212

1313
private SlidingActivityHelper mHelper;
1414

@@ -26,6 +26,18 @@ public void onPostCreate(Bundle savedInstanceState) {
2626
public View findViewById(int id) {
2727
return mHelper.findViewById(id);
2828
}
29+
30+
public void setContentView(int id) {
31+
setContentView(getLayoutInflater().inflate(id, null));
32+
}
33+
34+
public void setContentView(View v) {
35+
setContentView(v, null);
36+
}
37+
38+
public void setContentView(View v, LayoutParams params) {
39+
mHelper.setAboveContentView(v, params);
40+
}
2941

3042
public void setBehindContentView(int id) {
3143
setBehindContentView(getLayoutInflater().inflate(id, null));
@@ -54,6 +66,10 @@ public void showAbove() {
5466
public void showBehind() {
5567
mHelper.showBehind();
5668
}
69+
70+
public void setSlidingActionBarEnabled(boolean b) {
71+
mHelper.setSlidingActionBarEnabled(b);
72+
}
5773

5874
@Override
5975
public boolean onKeyDown(int keyCode, KeyEvent event) {

library/src/com/slidingmenu/lib/app/SlidingActivityBase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@ public interface SlidingActivityBase {
1515

1616
public void showAbove();
1717

18-
public void showBehind();
18+
public void showBehind();
1919

2020
}

library/src/com/slidingmenu/lib/app/SlidingActivityHelper.java

Lines changed: 39 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,26 @@
11
package com.slidingmenu.lib.app;
22

3-
import android.annotation.TargetApi;
43
import android.app.Activity;
54
import android.os.Bundle;
65
import android.view.KeyEvent;
7-
import android.view.LayoutInflater;
86
import android.view.View;
97
import android.view.ViewGroup;
108
import android.view.ViewGroup.LayoutParams;
119
import android.widget.LinearLayout;
12-
import android.widget.ListView;
13-
import android.widget.RelativeLayout;
1410

15-
import com.slidingmenu.lib.R;
1611
import com.slidingmenu.lib.SlidingMenu;
1712

1813
public class SlidingActivityHelper {
1914

2015
private Activity mActivity;
2116

2217
private SlidingMenu mSlidingMenu;
23-
18+
private View mViewAbove;
19+
2420
private boolean mViewBehindSet = false;
25-
21+
private boolean mOnPostCreateCalled = false;
22+
private boolean mEnableSlide = true;
23+
2624
public SlidingActivityHelper(Activity activity) {
2725
mActivity = activity;
2826
}
@@ -32,36 +30,58 @@ public void onCreate(Bundle savedInstanceState) {
3230
}
3331

3432
public void onPostCreate(Bundle savedInstanceState) {
35-
if (!mViewBehindSet) {
33+
if (!mViewBehindSet || mViewAbove == null) {
3634
throw new IllegalStateException("Both setBehindContentView must be called " +
3735
"in onCreate in addition to setContentView.");
3836
}
39-
ViewGroup decor = (ViewGroup) mActivity.getWindow().getDecorView();
40-
LinearLayout newDecor = new LinearLayout(mActivity);
41-
while (decor.getChildCount() > 0) {
42-
View child = decor.getChildAt(0);
43-
decor.removeView(child);
44-
newDecor.addView(child);
37+
mOnPostCreateCalled = true;
38+
if (mEnableSlide) {
39+
mActivity.getWindow().setContentView(mViewAbove);
40+
ViewGroup decor = (ViewGroup) mActivity.getWindow().getDecorView();
41+
LinearLayout newDecor = new LinearLayout(mActivity);
42+
while (decor.getChildCount() > 0) {
43+
View child = decor.getChildAt(0);
44+
decor.removeView(child);
45+
newDecor.addView(child);
46+
}
47+
decor.addView(mSlidingMenu, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
48+
mSlidingMenu.setViewAbove(newDecor);
49+
} else {
50+
mSlidingMenu.setViewAbove(mViewAbove);
51+
mActivity.getWindow().setContentView(mSlidingMenu);
4552
}
46-
decor.addView(mSlidingMenu, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
47-
mSlidingMenu.setViewAbove(newDecor);
4853
}
49-
54+
55+
public void setSlidingActionBarEnabled(boolean b) {
56+
if (mOnPostCreateCalled)
57+
throw new IllegalStateException("enableSlidingActionBar must be called in onCreate.");
58+
mEnableSlide = b;
59+
}
60+
5061
public View findViewById(int id) {
5162
View v;
5263
if (mSlidingMenu != null) {
5364
v = mSlidingMenu.findViewById(id);
5465
if (v != null)
5566
return v;
5667
}
57-
return mActivity.findViewById(id);
68+
if (mViewAbove != null) {
69+
v = mViewAbove.findViewById(id);
70+
if (v != null)
71+
return v;
72+
}
73+
return null;
74+
}
75+
76+
public void setAboveContentView(View v, LayoutParams params) {
77+
mViewAbove = v;
5878
}
5979

6080
public void setBehindContentView(View v, LayoutParams params) {
6181
mSlidingMenu.setViewBehind(v);
6282
mViewBehindSet = true;
6383
}
64-
84+
6585
public SlidingMenu getSlidingMenu() {
6686
return mSlidingMenu;
6787
}

library/src/com/slidingmenu/lib/app/SlidingFragmentActivity.java

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,17 @@ public View findViewById(int id) {
2727
return mHelper.findViewById(id);
2828
}
2929

30-
// public void setContentView(int id) {
31-
// setContentView(getLayoutInflater().inflate(id, null));
32-
// }
33-
//
34-
// public void setContentView(View v) {
35-
// setContentView(v, null);
36-
// }
37-
//
38-
// public void setContentView(View v, LayoutParams params) {
39-
// mHelper.setAboveContentView(v, params);
40-
// }
30+
public void setContentView(int id) {
31+
setBehindContentView(getLayoutInflater().inflate(id, null));
32+
}
33+
34+
public void setContentView(View v) {
35+
setBehindContentView(v, null);
36+
}
37+
38+
public void setContentView(View v, LayoutParams params) {
39+
mHelper.setAboveContentView(v, params);
40+
}
4141

4242
public void setBehindContentView(int id) {
4343
setBehindContentView(getLayoutInflater().inflate(id, null));
@@ -67,6 +67,10 @@ public void showBehind() {
6767
mHelper.showBehind();
6868
}
6969

70+
public void setSlidingActionBarEnabled(boolean b) {
71+
mHelper.setSlidingActionBarEnabled(b);
72+
}
73+
7074
@Override
7175
public boolean onKeyDown(int keyCode, KeyEvent event) {
7276
boolean b = mHelper.onKeyDown(keyCode, event);

library/src/com/slidingmenu/lib/app/SlidingListActivity.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
package com.slidingmenu.lib.app;
22

3+
import android.app.ListActivity;
34
import android.os.Bundle;
45
import android.view.KeyEvent;
56
import android.view.View;
67
import android.view.ViewGroup.LayoutParams;
7-
import android.widget.ListView;
88

9-
import com.actionbarsherlock.app.SherlockListActivity;
109
import com.slidingmenu.lib.SlidingMenu;
1110

12-
public class SlidingListActivity extends SherlockListActivity implements SlidingActivityBase {
11+
public class SlidingListActivity extends ListActivity implements SlidingActivityBase {
1312

1413
private SlidingActivityHelper mHelper;
1514

0 commit comments

Comments
 (0)