Skip to content

Commit c8901a3

Browse files
author
jfeinstein10
committed
New drop shadow example
1 parent 52bcb09 commit c8901a3

File tree

7 files changed

+92
-80
lines changed

7 files changed

+92
-80
lines changed

example/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
android:label="@string/app_name"
1414
android:theme="@style/Theme.Sherlock.Light.DarkActionBar" >
1515
<activity
16-
android:name=".ExampleSlidingActivity"
16+
android:name=".ExampleActivity"
1717
android:label="@string/app_name"
1818
android:uiOptions="splitActionBarWhenNarrow" >
1919
<intent-filter>

example/res/drawable/shadow.xml

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+
4+
<gradient
5+
android:endColor="#33000000"
6+
android:centerColor="#11000000"
7+
android:startColor="#00000000" />
8+
9+
</shape>

example/res/layout/list.xml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,7 @@
22
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
33
android:id="@android:id/list"
44
android:layout_width="match_parent"
5-
android:layout_height="match_parent" />
5+
android:layout_height="match_parent"
6+
android:paddingLeft="@dimen/list_padding"
7+
android:paddingRight="@dimen/list_padding"
8+
android:background="@android:color/background_light" />

example/res/values/dimens.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,6 @@
1616

1717
<resources>
1818
<dimen name="actionbar_home_width">60dp</dimen>
19-
<dimen name="actionbar_height">48dp</dimen>
19+
<dimen name="list_padding">10dp</dimen>
20+
<dimen name="shadow_width">15dp</dimen>
2021
</resources>
Lines changed: 52 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
package com.slidingmenu.example;
22

3+
import java.util.ArrayList;
34
import java.util.List;
4-
import java.util.Vector;
55

66
import android.os.Bundle;
77
import android.support.v4.app.Fragment;
88
import android.support.v4.app.FragmentManager;
99
import android.support.v4.app.FragmentPagerAdapter;
1010
import android.support.v4.app.FragmentTransaction;
1111
import android.support.v4.view.ViewPager;
12-
import android.view.View;
1312

1413
import com.actionbarsherlock.app.ActionBar;
1514
import com.actionbarsherlock.app.ActionBar.Tab;
@@ -18,63 +17,81 @@
1817
import com.actionbarsherlock.view.MenuItem;
1918
import com.slidingmenu.lib.app.SlidingFragmentActivity;
2019

21-
public class ExampleActivity extends SlidingFragmentActivity implements TabListener {
20+
public class ExampleActivity extends SlidingFragmentActivity {
2221

2322
public void onCreate(Bundle savedInstanceState) {
2423
super.onCreate(savedInstanceState);
24+
// set the Above View
2525
setContentView(R.layout.pager);
2626
ViewPager vp = (ViewPager) findViewById(R.id.pager);
27-
List<Fragment> fragments = new Vector<Fragment>();
28-
fragments.add(new SampleListFragment());
29-
fragments.add(new SampleListFragment());
30-
fragments.add(new SampleListFragment());
31-
vp.setAdapter(new PagerAdapter(super.getSupportFragmentManager(), fragments));
27+
PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager(),
28+
vp, getSupportActionBar());
29+
for (int i = 0; i < 3; i++) {
30+
adapter.addTab(new SampleListFragment());
31+
}
32+
33+
// set the Behind View
3234
setBehindContentView(R.layout.frame);
33-
3435
FragmentTransaction t = this.getSupportFragmentManager().beginTransaction();
3536
t.add(R.id.frame, new SampleListFragment());
3637
t.commit();
3738

39+
// customize the SlidingMenu
40+
getSlidingMenu().setShadowWidthRes(R.dimen.shadow_width);
41+
getSlidingMenu().setShadowDrawable(R.drawable.shadow);
3842
getSlidingMenu().setBehindOffsetRes(R.dimen.actionbar_home_width);
3943
getSlidingMenu().setBehindScrollScale(0.5f);
40-
// getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
44+
45+
// customize the ActionBar
4146
ActionBar actionBar = getSupportActionBar();
4247
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
4348
actionBar.setDisplayHomeAsUpEnabled(true);
44-
for (int i = 0; i < 3; i++) {
45-
Tab tab = actionBar.newTab();
46-
tab.setText("Tab " + i);
47-
tab.setTabListener(this);
48-
actionBar.addTab(tab);
49-
}
50-
View v = this.getWindow().getDecorView();
51-
View a = findViewById(android.R.id.home);
5249
}
53-
public class PagerAdapter extends FragmentPagerAdapter {
54-
55-
private List<Fragment> fragments;
56-
/**
57-
* @param fm
58-
* @param fragments
59-
*/
60-
public PagerAdapter(FragmentManager fm, List<Fragment> fragments) {
50+
51+
public class PagerAdapter extends FragmentPagerAdapter implements
52+
ViewPager.OnPageChangeListener, TabListener{
53+
54+
private List<Fragment> mFragments = new ArrayList<Fragment>();
55+
private ViewPager mPager;
56+
private ActionBar mActionBar;
57+
58+
public PagerAdapter(FragmentManager fm, ViewPager vp, ActionBar ab) {
6159
super(fm);
62-
this.fragments = fragments;
60+
mPager = vp;
61+
mPager.setAdapter(this);
62+
mPager.setOnPageChangeListener(this);
63+
mActionBar = ab;
64+
}
65+
66+
public void addTab(Fragment frag) {
67+
mFragments.add(frag);
68+
mActionBar.addTab(mActionBar.newTab().setTabListener(this).
69+
setText("Tab "+mFragments.size()));
6370
}
64-
/* (non-Javadoc)
65-
* @see android.support.v4.app.FragmentPagerAdapter#getItem(int)
66-
*/
71+
6772
@Override
6873
public Fragment getItem(int position) {
69-
return this.fragments.get(position);
74+
return mFragments.get(position);
7075
}
7176

72-
/* (non-Javadoc)
73-
* @see android.support.v4.view.PagerAdapter#getCount()
74-
*/
7577
@Override
7678
public int getCount() {
77-
return this.fragments.size();
79+
return mFragments.size();
80+
}
81+
82+
@Override
83+
public void onTabSelected(Tab tab, FragmentTransaction ft) {
84+
mPager.setCurrentItem(tab.getPosition());
85+
}
86+
87+
public void onTabUnselected(Tab tab, FragmentTransaction ft) { }
88+
public void onTabReselected(Tab tab, FragmentTransaction ft) { }
89+
public void onPageScrollStateChanged(int arg0) { }
90+
public void onPageScrolled(int arg0, float arg1, int arg2) { }
91+
92+
@Override
93+
public void onPageSelected(int position) {
94+
mActionBar.setSelectedNavigationItem(position);
7895
}
7996
}
8097

@@ -93,30 +110,4 @@ public boolean onCreateOptionsMenu(Menu menu) {
93110
return true;
94111
}
95112

96-
public void onTabSelected(Tab tab, FragmentTransaction ft) {
97-
// switch (tab.getPosition()) {
98-
// case 0:
99-
// findViewById(R.id.main).setBackgroundResource(android.R.color.white);
100-
// break;
101-
// case 1:
102-
// findViewById(R.id.main).setBackgroundResource(android.R.color.black);
103-
// break;
104-
// case 2:
105-
// findViewById(R.id.main).setBackgroundResource(android.R.color.darker_gray);
106-
// break;
107-
// }
108-
}
109-
110-
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
111-
// TODO Auto-generated method stub
112-
113-
}
114-
115-
public void onTabReselected(Tab tab, FragmentTransaction ft) {
116-
// TODO Auto-generated method stub
117-
118-
}
119-
120-
121-
122113
}

library/src/com/slidingmenu/lib/CustomViewAbove.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -392,11 +392,7 @@ OnPageChangeListener setInternalPageChangeListener(OnPageChangeListener listener
392392
public void setShadowWidth(int shadowWidth) {
393393
final int oldWidth = mShadowWidth;
394394
mShadowWidth = shadowWidth;
395-
396-
// final int width = getWidth();
397-
// recomputeScrollPosition(width, width, shadowWidth, oldWidth);
398-
//
399-
// requestLayout();
395+
invalidate();
400396
}
401397

402398
/**

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

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

33
import android.app.Activity;
4+
import android.content.res.Resources;
5+
import android.os.Build;
46
import android.os.Bundle;
57
import android.view.KeyEvent;
68
import android.view.LayoutInflater;
@@ -26,18 +28,28 @@ public SlidingActivityHelper(Activity activity) {
2628
}
2729

2830
public void onCreate(Bundle savedInstanceState) {
29-
// unregister the current content view
30-
mActivity.getWindow().getDecorView().findViewById(android.R.id.content).setId(View.NO_ID);
31-
// register a new content view
31+
3232
mContentView = new RelativeLayout(mActivity);
33-
mContentView.setId(android.R.id.content);
33+
// if (Build.VERSION.SDK_INT < 11) {
34+
// unregister the current content view
35+
mActivity.getWindow().getDecorView().findViewById(android.R.id.content).setId(View.NO_ID);
36+
// register a new content view
37+
mContentView.setId(android.R.id.content);
38+
// } else {
39+
// int content = Resources.getSystem().getIdentifier("content", "id", "android");
40+
// int c2 = android.R.id.content;
41+
// // unregister the current content view
42+
// mActivity.getWindow().getDecorView().findViewById(content).setId(View.NO_ID);
43+
// // register a new content view
44+
// mContentView.setId(content);
45+
// }
3446

3547
// customize based on type of Activity
3648
if (mActivity instanceof SlidingListActivity) {
37-
ListView lv = new ListView(mActivity);
38-
lv.setId(android.R.id.list);
39-
mContentView.addView(lv, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
40-
}
49+
ListView lv = new ListView(mActivity);
50+
lv.setId(android.R.id.list);
51+
mContentView.addView(lv, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
52+
}
4153

4254
// set up the SlidingMenu
4355
mSlidingMenu = (SlidingMenu) LayoutInflater.from(mActivity).inflate(R.layout.slidingmenumain, null);
@@ -52,18 +64,18 @@ public void onPostCreate(Bundle savedInstanceState) {
5264
"in onCreate in addition to setContentView.");
5365
}
5466
}
55-
67+
5668
public void setBehindContentView(View v, LayoutParams params) {
5769
if (!mBehindContentViewCalled) {
5870
mBehindContentViewCalled = true;
5971
}
6072
mSlidingMenu.setViewBehind(v);
6173
}
62-
74+
6375
public SlidingMenu getSlidingMenu() {
6476
return mSlidingMenu;
6577
}
66-
78+
6779
public void toggle() {
6880
if (mSlidingMenu.isBehindShowing()) {
6981
showAbove();

0 commit comments

Comments
 (0)