Loading res/values-sw720dp-land/dimens.xml +1 −0 Original line number Diff line number Diff line Loading @@ -20,4 +20,5 @@ <dimen name="list_divider_inset">80dp</dimen> <dimen name="max_drawer_width">320dp</dimen> </resources> res/values-sw720dp/dimens.xml +1 −0 Original line number Diff line number Diff line Loading @@ -20,4 +20,5 @@ <dimen name="list_item_padding">24dp</dimen> <dimen name="max_drawer_width">320dp</dimen> </resources> res/values/dimens.xml +1 −0 Original line number Diff line number Diff line Loading @@ -37,4 +37,5 @@ <dimen name="dir_elevation">8dp</dimen> <dimen name="drag_shadow_size">120dp</dimen> <dimen name="grid_item_elevation">2dp</dimen> <dimen name="max_drawer_width">280dp</dimen> </resources> src/com/android/documentsui/Display.java 0 → 100644 +56 −0 Original line number Diff line number Diff line /* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.documentsui; import android.app.Activity; import android.content.Context; import android.graphics.Point; import android.util.TypedValue; /* * Convenience class for getting display related attributes */ public final class Display { /* * Returns the screen width in pixels. */ public static float screenWidth(Activity activity) { Point size = new Point(); activity.getWindowManager().getDefaultDisplay().getSize(size); return size.x; } /* * Returns logical density of the display. */ public static float density(Context context) { return context.getResources().getDisplayMetrics().density; } /* * Returns action bar height in pixels. */ public static float actionBarHeight(Context context) { int actionBarHeight = 0; TypedValue tv = new TypedValue(); if (context.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) { actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, context.getResources().getDisplayMetrics()); } return actionBarHeight; } } src/com/android/documentsui/DrawerController.java +21 −0 Original line number Diff line number Diff line Loading @@ -16,10 +16,14 @@ package com.android.documentsui; import static com.android.documentsui.Shared.DEBUG; import android.app.Activity; import android.content.Context; import android.support.v4.app.ActionBarDrawerToggle; import android.support.v4.widget.DrawerLayout; import android.support.v4.widget.DrawerLayout.DrawerListener; import android.util.Log; import android.view.View; import android.widget.Toolbar; Loading @@ -30,6 +34,8 @@ import android.widget.Toolbar; */ abstract class DrawerController implements DrawerListener { public static final String TAG = "DrawerController"; abstract void setOpen(boolean open); abstract boolean isPresent(); abstract boolean isOpen(); Loading @@ -50,6 +56,8 @@ abstract class DrawerController implements DrawerListener { View drawer = activity.findViewById(R.id.drawer_roots); Toolbar toolbar = (Toolbar) activity.findViewById(R.id.roots_toolbar); drawer.getLayoutParams().width = calculateDrawerWidth(activity); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( activity, layout, Loading @@ -67,6 +75,19 @@ abstract class DrawerController implements DrawerListener { return new DummyDrawerController(); } private static int calculateDrawerWidth(Activity activity) { // Material design specification for navigation drawer: // https://www.google.com/design/spec/patterns/navigation-drawer.html float width = Display.screenWidth(activity) - Display.actionBarHeight(activity); float maxWidth = activity.getResources().getDimension(R.dimen.max_drawer_width); int finalWidth = (int) ((width > maxWidth ? maxWidth : width)); if (DEBUG) Log.d(TAG, "Calculated drawer width:" + (finalWidth / Display.density(activity))); return finalWidth; } /** * Runtime controller that manages a real drawer. */ Loading Loading
res/values-sw720dp-land/dimens.xml +1 −0 Original line number Diff line number Diff line Loading @@ -20,4 +20,5 @@ <dimen name="list_divider_inset">80dp</dimen> <dimen name="max_drawer_width">320dp</dimen> </resources>
res/values-sw720dp/dimens.xml +1 −0 Original line number Diff line number Diff line Loading @@ -20,4 +20,5 @@ <dimen name="list_item_padding">24dp</dimen> <dimen name="max_drawer_width">320dp</dimen> </resources>
res/values/dimens.xml +1 −0 Original line number Diff line number Diff line Loading @@ -37,4 +37,5 @@ <dimen name="dir_elevation">8dp</dimen> <dimen name="drag_shadow_size">120dp</dimen> <dimen name="grid_item_elevation">2dp</dimen> <dimen name="max_drawer_width">280dp</dimen> </resources>
src/com/android/documentsui/Display.java 0 → 100644 +56 −0 Original line number Diff line number Diff line /* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.documentsui; import android.app.Activity; import android.content.Context; import android.graphics.Point; import android.util.TypedValue; /* * Convenience class for getting display related attributes */ public final class Display { /* * Returns the screen width in pixels. */ public static float screenWidth(Activity activity) { Point size = new Point(); activity.getWindowManager().getDefaultDisplay().getSize(size); return size.x; } /* * Returns logical density of the display. */ public static float density(Context context) { return context.getResources().getDisplayMetrics().density; } /* * Returns action bar height in pixels. */ public static float actionBarHeight(Context context) { int actionBarHeight = 0; TypedValue tv = new TypedValue(); if (context.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) { actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, context.getResources().getDisplayMetrics()); } return actionBarHeight; } }
src/com/android/documentsui/DrawerController.java +21 −0 Original line number Diff line number Diff line Loading @@ -16,10 +16,14 @@ package com.android.documentsui; import static com.android.documentsui.Shared.DEBUG; import android.app.Activity; import android.content.Context; import android.support.v4.app.ActionBarDrawerToggle; import android.support.v4.widget.DrawerLayout; import android.support.v4.widget.DrawerLayout.DrawerListener; import android.util.Log; import android.view.View; import android.widget.Toolbar; Loading @@ -30,6 +34,8 @@ import android.widget.Toolbar; */ abstract class DrawerController implements DrawerListener { public static final String TAG = "DrawerController"; abstract void setOpen(boolean open); abstract boolean isPresent(); abstract boolean isOpen(); Loading @@ -50,6 +56,8 @@ abstract class DrawerController implements DrawerListener { View drawer = activity.findViewById(R.id.drawer_roots); Toolbar toolbar = (Toolbar) activity.findViewById(R.id.roots_toolbar); drawer.getLayoutParams().width = calculateDrawerWidth(activity); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( activity, layout, Loading @@ -67,6 +75,19 @@ abstract class DrawerController implements DrawerListener { return new DummyDrawerController(); } private static int calculateDrawerWidth(Activity activity) { // Material design specification for navigation drawer: // https://www.google.com/design/spec/patterns/navigation-drawer.html float width = Display.screenWidth(activity) - Display.actionBarHeight(activity); float maxWidth = activity.getResources().getDimension(R.dimen.max_drawer_width); int finalWidth = (int) ((width > maxWidth ? maxWidth : width)); if (DEBUG) Log.d(TAG, "Calculated drawer width:" + (finalWidth / Display.density(activity))); return finalWidth; } /** * Runtime controller that manages a real drawer. */ Loading