Add end drawer to the sample app.
Bug: 26555813
Change-Id: Ia7f00f8bb1a3342750c5c2db76b6ea1bb7cbb1bd
diff --git a/samples/Support7Demos/res/drawable-hdpi/drawer_shadow_end.9.png b/samples/Support7Demos/res/drawable-hdpi/drawer_shadow_end.9.png
new file mode 100644
index 0000000..2b79b04
--- /dev/null
+++ b/samples/Support7Demos/res/drawable-hdpi/drawer_shadow_end.9.png
Binary files differ
diff --git a/samples/Support7Demos/res/drawable-ldrtl-hdpi/drawer_shadow.9.png b/samples/Support7Demos/res/drawable-ldrtl-hdpi/drawer_shadow.9.png
new file mode 100644
index 0000000..2b79b04
--- /dev/null
+++ b/samples/Support7Demos/res/drawable-ldrtl-hdpi/drawer_shadow.9.png
Binary files differ
diff --git a/samples/Support7Demos/res/drawable-ldrtl-hdpi/drawer_shadow_end.9.png b/samples/Support7Demos/res/drawable-ldrtl-hdpi/drawer_shadow_end.9.png
new file mode 100644
index 0000000..224cc4f
--- /dev/null
+++ b/samples/Support7Demos/res/drawable-ldrtl-hdpi/drawer_shadow_end.9.png
Binary files differ
diff --git a/samples/Support7Demos/res/drawable-ldrtl-mdpi/drawer_shadow.9.png b/samples/Support7Demos/res/drawable-ldrtl-mdpi/drawer_shadow.9.png
new file mode 100644
index 0000000..b96daae
--- /dev/null
+++ b/samples/Support7Demos/res/drawable-ldrtl-mdpi/drawer_shadow.9.png
Binary files differ
diff --git a/samples/Support7Demos/res/drawable-ldrtl-mdpi/drawer_shadow_end.9.png b/samples/Support7Demos/res/drawable-ldrtl-mdpi/drawer_shadow_end.9.png
new file mode 100644
index 0000000..3797f99
--- /dev/null
+++ b/samples/Support7Demos/res/drawable-ldrtl-mdpi/drawer_shadow_end.9.png
Binary files differ
diff --git a/samples/Support7Demos/res/drawable-ldrtl-xhdpi/drawer_shadow.9.png b/samples/Support7Demos/res/drawable-ldrtl-xhdpi/drawer_shadow.9.png
new file mode 100644
index 0000000..77de73c
--- /dev/null
+++ b/samples/Support7Demos/res/drawable-ldrtl-xhdpi/drawer_shadow.9.png
Binary files differ
diff --git a/samples/Support7Demos/res/drawable-ldrtl-xhdpi/drawer_shadow_end.9.png b/samples/Support7Demos/res/drawable-ldrtl-xhdpi/drawer_shadow_end.9.png
new file mode 100644
index 0000000..fa3d853
--- /dev/null
+++ b/samples/Support7Demos/res/drawable-ldrtl-xhdpi/drawer_shadow_end.9.png
Binary files differ
diff --git a/samples/Support7Demos/res/drawable-mdpi/drawer_shadow_end.9.png b/samples/Support7Demos/res/drawable-mdpi/drawer_shadow_end.9.png
new file mode 100644
index 0000000..b96daae
--- /dev/null
+++ b/samples/Support7Demos/res/drawable-mdpi/drawer_shadow_end.9.png
Binary files differ
diff --git a/samples/Support7Demos/res/drawable-xhdpi/drawer_shadow_end.9.png b/samples/Support7Demos/res/drawable-xhdpi/drawer_shadow_end.9.png
new file mode 100644
index 0000000..77de73c
--- /dev/null
+++ b/samples/Support7Demos/res/drawable-xhdpi/drawer_shadow_end.9.png
Binary files differ
diff --git a/samples/Support7Demos/res/layout/drawer_layout.xml b/samples/Support7Demos/res/layout/drawer_layout.xml
index f8d22d1..1249b8b 100644
--- a/samples/Support7Demos/res/layout/drawer_layout.xml
+++ b/samples/Support7Demos/res/layout/drawer_layout.xml
@@ -76,7 +76,21 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
- android:background="#ff333333"
+ android:background="#333333"
android:fitsSystemWindows="true"/>
+
+ <!-- android:layout_gravity="end" tells DrawerLayout to treat
+ this as a sliding drawer on the ending side, which is
+ right for left-to-right locales. The drawer is given arbitrary
+ initial width and extends the full height of the container. A
+ solid background is used for contrast with the content view.
+ The actual width of drawer will be determined at runtime based on
+ the screen size according to the Material spec. -->
+ <FrameLayout
+ android:id="@+id/end_drawer"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:layout_gravity="end"
+ android:background="#808080"/>
</android.support.v4.widget.DrawerLayout>
diff --git a/samples/Support7Demos/src/com/example/android/supportv7/widget/DrawerLayoutActivity.java b/samples/Support7Demos/src/com/example/android/supportv7/widget/DrawerLayoutActivity.java
index d654873..7854364 100644
--- a/samples/Support7Demos/src/com/example/android/supportv7/widget/DrawerLayoutActivity.java
+++ b/samples/Support7Demos/src/com/example/android/supportv7/widget/DrawerLayoutActivity.java
@@ -27,10 +27,10 @@
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
-import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
+import android.widget.FrameLayout;
import android.widget.ListView;
import android.widget.TextView;
import com.example.android.supportv7.R;
@@ -77,7 +77,8 @@
*/
public class DrawerLayoutActivity extends AppCompatActivity {
private DrawerLayout mDrawerLayout;
- private ListView mDrawer;
+ private ListView mStartDrawer;
+ private FrameLayout mEndDrawer;
private TextView mContent;
private ActionBarDrawerToggle mDrawerToggle;
@@ -90,19 +91,21 @@
setContentView(R.layout.drawer_layout);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
- mDrawer = (ListView) findViewById(R.id.start_drawer);
+ mStartDrawer = (ListView) findViewById(R.id.start_drawer);
+ mEndDrawer = (FrameLayout) findViewById(R.id.end_drawer);
mContent = (TextView) findViewById(R.id.content_text);
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
+ mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow_end, GravityCompat.END);
// The drawer title must be set in order to announce state changes when
// accessibility is turned on. This is typically a simple description,
// e.g. "Navigation".
mDrawerLayout.setDrawerTitle(GravityCompat.START, getString(R.string.drawer_title));
- mDrawer.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
+ mStartDrawer.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
Shakespeare.TITLES));
- mDrawer.setOnItemClickListener(new DrawerItemClickListener());
+ mStartDrawer.setOnItemClickListener(new DrawerItemClickListener());
// Find the toolbar in our layout and set it as the support action bar on the activity.
// This is required to have the drawer slide "over" the toolbar.
@@ -171,10 +174,15 @@
final int maxDrawerWidth = Math.max(0, drawerLayoutWidth - actionBarSize);
final int drawerWidth = Math.min(idealDrawerWidth, maxDrawerWidth);
- final DrawerLayout.LayoutParams drawerLp =
- (DrawerLayout.LayoutParams) mDrawer.getLayoutParams();
- drawerLp.width = drawerWidth;
- mDrawer.setLayoutParams(drawerLp);
+ final DrawerLayout.LayoutParams startDrawerLp =
+ (DrawerLayout.LayoutParams) mStartDrawer.getLayoutParams();
+ startDrawerLp.width = drawerWidth;
+ mStartDrawer.setLayoutParams(startDrawerLp);
+
+ final DrawerLayout.LayoutParams endDrawerLp =
+ (DrawerLayout.LayoutParams) mEndDrawer.getLayoutParams();
+ endDrawerLp.width = drawerWidth;
+ mEndDrawer.setLayoutParams(endDrawerLp);
// Remove ourselves as the pre-draw listener since this is a one-time
// configuration.
@@ -206,10 +214,22 @@
@Override
public void onBackPressed() {
- // Is the drawer open?
- if (mDrawerLayout.isDrawerOpen(mDrawer)) {
- // Close the drawer and return.
- mDrawerLayout.closeDrawer(mDrawer);
+ boolean hadOpenDrawer = false;
+ // Is the start drawer open?
+ if (mDrawerLayout.isDrawerOpen(mStartDrawer)) {
+ // Close it
+ mDrawerLayout.closeDrawer(mStartDrawer);
+ hadOpenDrawer = true;
+ }
+ // Is the end drawer open?
+ if (mDrawerLayout.isDrawerOpen(mEndDrawer)) {
+ // Close it
+ mDrawerLayout.closeDrawer(mEndDrawer);
+ hadOpenDrawer = true;
+ }
+
+ if (hadOpenDrawer) {
+ // If we had one or both drawers open, now that we've closed it / them, return.
return;
}
@@ -231,7 +251,7 @@
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
mContent.setText(Shakespeare.DIALOGUE[position]);
mToolbar.setTitle(Shakespeare.TITLES[position]);
- mDrawerLayout.closeDrawer(mDrawer);
+ mDrawerLayout.closeDrawer(mStartDrawer);
}
}
}