More DocumentsUI material iteration.
Move to using Toolbar for all actions. Drawer contains its own Toolbar with separate title, and hamburger is always visible. Change drawer items to match spec. Switching to Toolbar allows us to remove nasty dialog-on-tablet hacks, yay! This also means we can finally get real IME resizing support. Move to using elevation for all shadows; this removes more nasty hacks around drawing directory shadows. Bug: 15836082 Change-Id: Iba70b898f385a7debd8aabfc98ff39d20bca860d
@@ -11,7 +11,7 @@
|
||||
|
||||
<activity
|
||||
android:name=".DocumentsActivity"
|
||||
android:theme="@style/Theme"
|
||||
android:theme="@style/DocumentsTheme"
|
||||
android:icon="@drawable/ic_doc_text">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.OPEN_DOCUMENT" />
|
||||
|
||||
|
Before Width: | Height: | Size: 184 B After Width: | Height: | Size: 216 B |
|
Before Width: | Height: | Size: 163 B After Width: | Height: | Size: 197 B |
|
Before Width: | Height: | Size: 193 B After Width: | Height: | Size: 223 B |
|
Before Width: | Height: | Size: 233 B After Width: | Height: | Size: 260 B |
@@ -15,7 +15,11 @@
|
||||
-->
|
||||
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_focused="true" android:state_activated="true" android:drawable="@color/accent_item_activated" />
|
||||
<item android:state_focused="false" android:state_activated="true" android:drawable="@color/accent_item_activated" />
|
||||
<item android:state_focused="true" android:state_activated="true">
|
||||
<color android:color="?android:attr/colorAccent" />
|
||||
</item>
|
||||
<item android:state_focused="false" android:state_activated="true">
|
||||
<color android:color="?android:attr/colorAccent" />
|
||||
</item>
|
||||
<item android:drawable="@android:color/transparent" />
|
||||
</selector>
|
||||
|
||||
@@ -15,8 +15,11 @@
|
||||
-->
|
||||
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_pressed="true" android:drawable="@color/item_root_pressed" />
|
||||
<item android:state_activated="true" android:drawable="@color/item_root_focused" />
|
||||
<item android:state_focused="true" android:drawable="@color/item_root_focused" />
|
||||
<item android:state_focused="true" android:state_activated="true">
|
||||
<color android:color="@color/accent_color_overlay" />
|
||||
</item>
|
||||
<item android:state_focused="false" android:state_activated="true">
|
||||
<color android:color="@color/accent_color_overlay" />
|
||||
</item>
|
||||
<item android:drawable="@android:color/transparent" />
|
||||
</selector>
|
||||
@@ -17,7 +17,7 @@
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:foreground="@drawable/item_activated">
|
||||
android:background="@drawable/item_activated">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -17,44 +17,59 @@
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal"
|
||||
android:baselineAligned="false">
|
||||
android:orientation="vertical">
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:id="@+id/dialog_roots">
|
||||
<Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?android:attr/actionBarSize"
|
||||
android:background="?android:attr/colorPrimary"
|
||||
android:elevation="8dp"
|
||||
android:theme="?android:attr/actionBarTheme">
|
||||
|
||||
<Spinner
|
||||
android:id="@+id/stack"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="4dp"
|
||||
android:overlapAnchor="true" />
|
||||
|
||||
</Toolbar>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1"
|
||||
android:orientation="horizontal"
|
||||
android:baselineAligned="false">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/container_roots"
|
||||
android:layout_width="250dp"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="end"
|
||||
android:scaleType="fitXY"
|
||||
android:src="@drawable/ic_drawer_shadow_tablet" />
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical"
|
||||
android:elevation="8dp"
|
||||
android:background="@*android:color/material_grey_50">
|
||||
|
||||
</FrameLayout>
|
||||
<com.android.documentsui.DirectoryContainerView
|
||||
android:id="@+id/container_directory"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
<FrameLayout
|
||||
android:id="@+id/container_save"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@*android:color/material_grey_50"
|
||||
android:elevation="8dp" />
|
||||
|
||||
<com.android.documentsui.DirectoryContainerView
|
||||
android:id="@+id/container_directory"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/container_save"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
@@ -24,6 +24,23 @@
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?android:attr/actionBarSize"
|
||||
android:background="?android:attr/colorPrimary"
|
||||
android:elevation="8dp"
|
||||
android:theme="?android:attr/actionBarTheme">
|
||||
|
||||
<Spinner
|
||||
android:id="@+id/stack"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="4dp"
|
||||
android:overlapAnchor="true" />
|
||||
|
||||
</Toolbar>
|
||||
|
||||
<com.android.documentsui.DirectoryContainerView
|
||||
android:id="@+id/container_directory"
|
||||
android:layout_width="match_parent"
|
||||
@@ -33,15 +50,35 @@
|
||||
<FrameLayout
|
||||
android:id="@+id/container_save"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@*android:color/material_grey_50"
|
||||
android:elevation="8dp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/container_roots"
|
||||
<LinearLayout
|
||||
android:id="@+id/drawer_roots"
|
||||
android:layout_width="250dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="start"
|
||||
android:background="#fff" />
|
||||
android:orientation="vertical"
|
||||
android:elevation="16dp"
|
||||
android:background="@*android:color/white">
|
||||
|
||||
<Toolbar
|
||||
android:id="@+id/roots_toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?android:attr/actionBarSize"
|
||||
android:background="?android:attr/colorPrimary"
|
||||
android:elevation="8dp"
|
||||
android:theme="?android:attr/actionBarTheme" />
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/container_roots"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</android.support.v4.widget.DrawerLayout>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<com.android.documentsui.DirectoryView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@drawable/ic_dir_shadow">
|
||||
android:background="@*android:color/material_grey_50">
|
||||
|
||||
<TextView
|
||||
android:id="@android:id/empty"
|
||||
|
||||
@@ -17,32 +17,16 @@
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
android:orientation="horizontal"
|
||||
android:baselineAligned="false"
|
||||
android:gravity="center_vertical"
|
||||
android:minHeight="?android:attr/listPreferredItemHeightSmall">
|
||||
|
||||
<!-- Le sigh, this really should be an asset -->
|
||||
<View
|
||||
<Button
|
||||
android:id="@android:id/button1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="#ccc" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:baselineAligned="false"
|
||||
android:gravity="center_vertical"
|
||||
android:background="#ddd"
|
||||
android:minHeight="?android:attr/listPreferredItemHeightSmall">
|
||||
|
||||
<Button
|
||||
android:id="@android:id/button1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textAllCaps="false"
|
||||
android:padding="8dp" />
|
||||
|
||||
</LinearLayout>
|
||||
android:layout_height="match_parent"
|
||||
android:textAllCaps="false"
|
||||
style="?android:attr/buttonBarPositiveButtonStyle" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@@ -18,4 +18,5 @@
|
||||
android:id="@android:id/list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:divider="@drawable/ic_drawer_hairline_divider" />
|
||||
android:paddingTop="8dp"
|
||||
android:divider="@null" />
|
||||
|
||||
@@ -17,66 +17,55 @@
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
android:paddingStart="@dimen/list_item_padding"
|
||||
android:orientation="horizontal"
|
||||
android:baselineAligned="false"
|
||||
android:gravity="center_vertical"
|
||||
android:minHeight="?android:attr/listPreferredItemHeightSmall">
|
||||
|
||||
<!-- Le sigh, this really should be an asset -->
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="#ccc" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:baselineAligned="false"
|
||||
android:gravity="center_vertical"
|
||||
android:background="#ddd"
|
||||
android:minHeight="?android:attr/listPreferredItemHeightSmall">
|
||||
<FrameLayout
|
||||
android:layout_width="@dimen/icon_size"
|
||||
android:layout_height="@dimen/icon_size"
|
||||
android:layout_marginEnd="16dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@android:id/icon"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_width="@dimen/root_icon_size"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="centerInside"
|
||||
android:contentDescription="@null" />
|
||||
|
||||
<EditText
|
||||
android:id="@android:id/title"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:singleLine="true"
|
||||
android:selectAllOnFocus="true" />
|
||||
</FrameLayout>
|
||||
|
||||
<FrameLayout
|
||||
<EditText
|
||||
android:id="@android:id/title"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:singleLine="true"
|
||||
android:selectAllOnFocus="true" />
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<Button
|
||||
android:id="@android:id/button1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
android:text="@string/menu_save"
|
||||
style="?android:attr/buttonBarPositiveButtonStyle" />
|
||||
|
||||
<Button
|
||||
android:id="@android:id/button1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:text="@string/menu_save"
|
||||
android:textAllCaps="true"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:padding="8dp" />
|
||||
<ProgressBar
|
||||
android:id="@android:id/progress"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:visibility="gone"
|
||||
android:indeterminate="true"
|
||||
android:padding="8dp"
|
||||
style="?android:attr/progressBarStyle" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@android:id/progress"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:visibility="gone"
|
||||
android:indeterminate="true"
|
||||
android:padding="8dp"
|
||||
style="?android:attr/progressBarStyle" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
</LinearLayout>
|
||||
</FrameLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
android:layout_height="@dimen/grid_item_height"
|
||||
android:orientation="vertical"
|
||||
android:background="@color/grid_item_background"
|
||||
android:foreground="@drawable/item_activated">
|
||||
android:foreground="@drawable/item_activated_overlay">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/icon_thumb"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:foreground="@drawable/item_activated">
|
||||
android:background="@drawable/item_activated">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -17,25 +17,33 @@
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:minHeight="?android:attr/listPreferredItemHeightSmall"
|
||||
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
|
||||
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
|
||||
android:minHeight="48dp"
|
||||
android:paddingStart="@dimen/list_item_padding"
|
||||
android:paddingEnd="@dimen/list_item_padding"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal"
|
||||
android:baselineAligned="false"
|
||||
android:background="@drawable/item_root">
|
||||
android:background="@drawable/item_activated">
|
||||
|
||||
<ImageView
|
||||
android:id="@android:id/icon"
|
||||
<FrameLayout
|
||||
android:layout_width="@dimen/icon_size"
|
||||
android:layout_height="@dimen/icon_size"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:scaleType="centerInside"
|
||||
android:contentDescription="@null" />
|
||||
android:layout_marginEnd="16dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@android:id/icon"
|
||||
android:layout_width="@dimen/root_icon_size"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="centerInside"
|
||||
android:contentDescription="@null" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingBottom="8dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
@@ -45,7 +53,8 @@
|
||||
android:singleLine="true"
|
||||
android:ellipsize="end"
|
||||
android:textAlignment="viewStart"
|
||||
style="@style/TextAppearance.Medium" />
|
||||
android:textAppearance="@android:style/TextAppearance.Material.Body1"
|
||||
android:textColor="?android:attr/textColorPrimary" />
|
||||
|
||||
<TextView
|
||||
android:id="@android:id/summary"
|
||||
@@ -54,7 +63,8 @@
|
||||
android:singleLine="true"
|
||||
android:ellipsize="end"
|
||||
android:textAlignment="viewStart"
|
||||
style="@style/TextAppearance.Small" />
|
||||
android:textAppearance="@android:style/TextAppearance.Material.Body1"
|
||||
android:textColor="?android:attr/textColorSecondary" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
@@ -14,7 +14,15 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<View xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/ic_drawer_tall_divider" />
|
||||
android:paddingTop="8dp"
|
||||
android:paddingBottom="8dp">
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/listDivider" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
android:id="@+id/subdir"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingEnd="8dp"
|
||||
android:scaleType="centerInside"
|
||||
android:visibility="gone"
|
||||
android:src="@drawable/ic_subdirectory_arrow"
|
||||
@@ -35,11 +36,13 @@
|
||||
|
||||
<TextView
|
||||
android:id="@android:id/title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:singleLine="true"
|
||||
android:ellipsize="middle"
|
||||
android:textAlignment="viewStart"
|
||||
style="@style/TextAppearance.Medium" />
|
||||
android:textAppearance="@android:style/TextAppearance.Material.Subhead"
|
||||
android:textColor="?android:attr/textColorPrimary" />
|
||||
|
||||
</LinearLayout>
|
||||
@@ -14,12 +14,20 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<style name="Theme" parent="@android:style/Theme.DeviceDefault.Light">
|
||||
<item name="android:actionOverflowButtonStyle">@style/DarkerOverflow</item>
|
||||
<item name="android:windowBackground">@*android:drawable/dialog_full_holo_light</item>
|
||||
<item name="android:colorBackgroundCacheHint">@null</item>
|
||||
<item name="android:windowIsTranslucent">true</item>
|
||||
<item name="android:windowAnimationStyle">@*android:style/Animation.DeviceDefault.Dialog</item>
|
||||
</style>
|
||||
</resources>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingEnd="8dp"
|
||||
android:orientation="horizontal"
|
||||
android:baselineAligned="false">
|
||||
|
||||
<TextView
|
||||
android:id="@android:id/title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
android:ellipsize="middle"
|
||||
android:textAlignment="viewStart"
|
||||
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Widget.ActionBar.Title" />
|
||||
|
||||
</LinearLayout>
|
||||
@@ -21,7 +21,7 @@
|
||||
<item type="dimen" name="dialog_height">90%</item>
|
||||
|
||||
<dimen name="grid_padding_horiz">24dp</dimen>
|
||||
<dimen name="grid_padding_vert">8dp</dimen>
|
||||
<dimen name="grid_padding_vert">16dp</dimen>
|
||||
|
||||
<dimen name="grid_item_padding">8dp</dimen>
|
||||
|
||||
|
||||
@@ -15,12 +15,10 @@
|
||||
-->
|
||||
|
||||
<resources>
|
||||
<color name="chip">#ddd</color>
|
||||
<color name="item_root_pressed">#33cccccc</color>
|
||||
<color name="item_root_focused">#66cccccc</color>
|
||||
|
||||
<color name="grid_item_background">#ffe1e1e0</color>
|
||||
<!-- Half-alpha of material_teal_500 -->
|
||||
<color name="accent_color_overlay">#8800bcd4</color>
|
||||
|
||||
<color name="accent_item_activated">#88009587</color>
|
||||
<color name="grid_item_background">@*android:color/material_grey_300</color>
|
||||
|
||||
</resources>
|
||||
|
||||
@@ -37,4 +37,6 @@
|
||||
<bool name="show_as_dialog">false</bool>
|
||||
<bool name="always_show_summary">false</bool>
|
||||
|
||||
<dimen name="dir_elevation">8dp</dimen>
|
||||
|
||||
</resources>
|
||||
|
||||
@@ -15,6 +15,29 @@
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<style name="DocumentsTheme" parent="@android:style/Theme.DeviceDefault.Light.DialogWhenLarge">
|
||||
<item name="android:actionBarWidgetTheme">@null</item>
|
||||
<item name="android:actionBarTheme">@*android:style/ThemeOverlay.Material.Dark.ActionBar</item>
|
||||
<item name="android:actionBarPopupTheme">@*android:style/ThemeOverlay.Material.Light</item>
|
||||
|
||||
<item name="android:colorPrimaryDark">@*android:color/material_blue_grey_900</item>
|
||||
<item name="android:colorPrimary">@*android:color/material_blue_grey_800</item>
|
||||
<item name="android:colorAccent">@*android:color/material_teal_500</item>
|
||||
|
||||
<item name="android:windowActionBar">false</item>
|
||||
<item name="android:windowNoTitle">true</item>
|
||||
|
||||
<item name="*android:windowFixedWidthMajor">@null</item>
|
||||
<item name="*android:windowFixedWidthMinor">@null</item>
|
||||
<item name="*android:windowMinWidthMajor">@null</item>
|
||||
<item name="*android:windowMinWidthMinor">@null</item>
|
||||
<item name="*android:windowFixedHeightMajor">80%</item>
|
||||
<item name="*android:windowFixedHeightMinor">90%</item>
|
||||
|
||||
<item name="android:windowSoftInputMode">stateUnspecified|adjustUnspecified</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance" />
|
||||
|
||||
<style name="TextAppearance.Medium">
|
||||
@@ -27,14 +50,4 @@
|
||||
<item name="android:textColor">?android:attr/textColorTertiary</item>
|
||||
</style>
|
||||
|
||||
<!-- Normally just a redirection, but this is used to make ourselves a
|
||||
dialog on large tablets -->
|
||||
<style name="Theme" parent="@android:style/Theme.DeviceDefault.Light">
|
||||
<item name="android:actionOverflowButtonStyle">@style/DarkerOverflow</item>
|
||||
</style>
|
||||
|
||||
<style name="DarkerOverflow" parent="@android:style/Widget.DeviceDefault.Light.ActionButton.Overflow">
|
||||
<item name="android:src">@drawable/ic_menu_overflow</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
||||
|
||||
@@ -35,14 +35,6 @@ public class DirectoryContainerView extends FrameLayout {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onFinishInflate() {
|
||||
super.onFinishInflate();
|
||||
setClipChildren(false);
|
||||
setClipToOutline(false);
|
||||
setClipToPadding(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void dispatchDraw(Canvas canvas) {
|
||||
final ArrayList<View> disappearing = mDisappearingChildren;
|
||||
|
||||
@@ -36,19 +36,6 @@ public class DirectoryView extends FrameLayout {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBackground(Drawable background) {
|
||||
final Rect rect = new Rect();
|
||||
background.getPadding(rect);
|
||||
|
||||
final boolean insetLeft = getResources().getBoolean(R.bool.list_divider_inset_left);
|
||||
if (insetLeft) {
|
||||
super.setBackground(new InsetDrawable(background, -rect.left, 0, -rect.right, 0));
|
||||
} else {
|
||||
super.setBackground(new InsetDrawable(background, -rect.right, 0, -rect.left, 0));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
|
||||
super.onSizeChanged(w, h, oldw, oldh);
|
||||
@@ -63,5 +50,11 @@ public class DirectoryView extends FrameLayout {
|
||||
public void setPosition(float position) {
|
||||
mPosition = position;
|
||||
setX((mWidth > 0) ? (mPosition * mWidth) : 0);
|
||||
|
||||
if (mPosition != 0) {
|
||||
setTranslationZ(getResources().getDimensionPixelSize(R.dimen.dir_elevation));
|
||||
} else {
|
||||
setTranslationZ(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,8 +28,6 @@ import static com.android.documentsui.DocumentsActivity.State.ACTION_OPEN_TREE;
|
||||
import static com.android.documentsui.DocumentsActivity.State.MODE_GRID;
|
||||
import static com.android.documentsui.DocumentsActivity.State.MODE_LIST;
|
||||
|
||||
import android.app.ActionBar;
|
||||
import android.app.ActionBar.OnNavigationListener;
|
||||
import android.app.Activity;
|
||||
import android.app.Fragment;
|
||||
import android.app.FragmentManager;
|
||||
@@ -39,14 +37,12 @@ import android.content.ComponentName;
|
||||
import android.content.ContentProviderClient;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.ContentValues;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.content.res.Resources;
|
||||
import android.database.Cursor;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.graphics.drawable.InsetDrawable;
|
||||
import android.net.Uri;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
@@ -55,7 +51,6 @@ import android.os.Parcelable;
|
||||
import android.provider.DocumentsContract;
|
||||
import android.provider.DocumentsContract.Root;
|
||||
import android.support.v4.app.ActionBarDrawerToggle;
|
||||
import android.support.v4.view.GravityCompat;
|
||||
import android.support.v4.widget.DrawerLayout;
|
||||
import android.support.v4.widget.DrawerLayout.DrawerListener;
|
||||
import android.util.Log;
|
||||
@@ -64,17 +59,19 @@ import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.MenuItem.OnActionExpandListener;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.View.OnTouchListener;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.AdapterView.OnItemSelectedListener;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.SearchView;
|
||||
import android.widget.SearchView.OnQueryTextListener;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
import android.widget.Toolbar;
|
||||
|
||||
import com.android.documentsui.RecentsProvider.RecentColumns;
|
||||
import com.android.documentsui.RecentsProvider.ResumeColumns;
|
||||
@@ -105,9 +102,14 @@ public class DocumentsActivity extends Activity {
|
||||
|
||||
private SearchView mSearchView;
|
||||
|
||||
private Toolbar mToolbar;
|
||||
private Spinner mToolbarStack;
|
||||
|
||||
private Toolbar mRootsToolbar;
|
||||
|
||||
private DrawerLayout mDrawerLayout;
|
||||
private ActionBarDrawerToggle mDrawerToggle;
|
||||
private View mRootsContainer;
|
||||
private View mRootsDrawer;
|
||||
|
||||
private DirectoryContainerView mDirectoryContainer;
|
||||
|
||||
@@ -115,6 +117,8 @@ public class DocumentsActivity extends Activity {
|
||||
private boolean mIgnoreNextClose;
|
||||
private boolean mIgnoreNextCollapse;
|
||||
|
||||
private boolean mSearchExpanded;
|
||||
|
||||
private RootsCache mRoots;
|
||||
private State mState;
|
||||
|
||||
@@ -127,59 +131,31 @@ public class DocumentsActivity extends Activity {
|
||||
setResult(Activity.RESULT_CANCELED);
|
||||
setContentView(R.layout.activity);
|
||||
|
||||
final Context context = this;
|
||||
final Resources res = getResources();
|
||||
mShowAsDialog = res.getBoolean(R.bool.show_as_dialog);
|
||||
|
||||
if (mShowAsDialog) {
|
||||
// backgroundDimAmount from theme isn't applied; do it manually
|
||||
// Strongly define our horizontal dimension; we leave vertical as
|
||||
// WRAP_CONTENT so that system resizes us when IME is showing.
|
||||
final WindowManager.LayoutParams a = getWindow().getAttributes();
|
||||
a.dimAmount = 0.6f;
|
||||
getWindow().setAttributes(a);
|
||||
|
||||
getWindow().setFlags(0, WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
|
||||
getWindow().setFlags(~0, WindowManager.LayoutParams.FLAG_DIM_BEHIND);
|
||||
|
||||
// Inset ourselves to look like a dialog
|
||||
final Point size = new Point();
|
||||
getWindowManager().getDefaultDisplay().getSize(size);
|
||||
a.width = (int) res.getFraction(R.dimen.dialog_width, size.x, size.x);
|
||||
|
||||
final int width = (int) res.getFraction(R.dimen.dialog_width, size.x, size.x);
|
||||
final int height = (int) res.getFraction(R.dimen.dialog_height, size.y, size.y);
|
||||
final int insetX = (size.x - width) / 2;
|
||||
final int insetY = (size.y - height) / 2;
|
||||
|
||||
final Drawable before = getWindow().getDecorView().getBackground();
|
||||
final Drawable after = new InsetDrawable(before, insetX, insetY, insetX, insetY);
|
||||
getWindow().getDecorView().setBackground(after);
|
||||
|
||||
// Dismiss when touch down in the dimmed inset area
|
||||
getWindow().getDecorView().setOnTouchListener(new OnTouchListener() {
|
||||
@Override
|
||||
public boolean onTouch(View v, MotionEvent event) {
|
||||
if (event.getAction() == MotionEvent.ACTION_DOWN) {
|
||||
final float x = event.getX();
|
||||
final float y = event.getY();
|
||||
if (x < insetX || x > v.getWidth() - insetX || y < insetY
|
||||
|| y > v.getHeight() - insetY) {
|
||||
finish();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
});
|
||||
getWindow().setAttributes(a);
|
||||
|
||||
} else {
|
||||
// Non-dialog means we have a drawer
|
||||
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
|
||||
|
||||
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
|
||||
R.drawable.ic_drawer_glyph, R.string.drawer_open, R.string.drawer_close);
|
||||
R.drawable.ic_hamburger, R.string.drawer_open, R.string.drawer_close);
|
||||
|
||||
mDrawerLayout.setDrawerListener(mDrawerListener);
|
||||
mDrawerLayout.setDrawerShadow(R.drawable.ic_drawer_shadow, GravityCompat.START);
|
||||
|
||||
mRootsContainer = findViewById(R.id.container_roots);
|
||||
mRootsDrawer = findViewById(R.id.drawer_roots);
|
||||
}
|
||||
|
||||
mDirectoryContainer = (DirectoryContainerView) findViewById(R.id.container_directory);
|
||||
@@ -190,10 +166,23 @@ public class DocumentsActivity extends Activity {
|
||||
buildDefaultState();
|
||||
}
|
||||
|
||||
mToolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
mToolbar.setTitleTextAppearance(context,
|
||||
android.R.style.TextAppearance_DeviceDefault_Widget_ActionBar_Title);
|
||||
|
||||
mToolbarStack = (Spinner) findViewById(R.id.stack);
|
||||
mToolbarStack.setOnItemSelectedListener(mStackListener);
|
||||
|
||||
mRootsToolbar = (Toolbar) findViewById(R.id.roots_toolbar);
|
||||
if (mRootsToolbar != null) {
|
||||
mRootsToolbar.setTitleTextAppearance(context,
|
||||
android.R.style.TextAppearance_DeviceDefault_Widget_ActionBar_Title);
|
||||
}
|
||||
|
||||
// Hide roots when we're managing a specific root
|
||||
if (mState.action == ACTION_MANAGE) {
|
||||
if (mShowAsDialog) {
|
||||
findViewById(R.id.dialog_roots).setVisibility(View.GONE);
|
||||
findViewById(R.id.container_roots).setVisibility(View.GONE);
|
||||
} else {
|
||||
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
|
||||
}
|
||||
@@ -382,15 +371,11 @@ public class DocumentsActivity extends Activity {
|
||||
@Override
|
||||
public void onDrawerOpened(View drawerView) {
|
||||
mDrawerToggle.onDrawerOpened(drawerView);
|
||||
updateActionBar();
|
||||
invalidateOptionsMenu();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDrawerClosed(View drawerView) {
|
||||
mDrawerToggle.onDrawerClosed(drawerView);
|
||||
updateActionBar();
|
||||
invalidateOptionsMenu();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -410,9 +395,9 @@ public class DocumentsActivity extends Activity {
|
||||
public void setRootsDrawerOpen(boolean open) {
|
||||
if (!mShowAsDialog) {
|
||||
if (open) {
|
||||
mDrawerLayout.openDrawer(mRootsContainer);
|
||||
mDrawerLayout.openDrawer(mRootsDrawer);
|
||||
} else {
|
||||
mDrawerLayout.closeDrawer(mRootsContainer);
|
||||
mDrawerLayout.closeDrawer(mRootsDrawer);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -421,44 +406,51 @@ public class DocumentsActivity extends Activity {
|
||||
if (mShowAsDialog) {
|
||||
return false;
|
||||
} else {
|
||||
return mDrawerLayout.isDrawerOpen(mRootsContainer);
|
||||
return mDrawerLayout.isDrawerOpen(mRootsDrawer);
|
||||
}
|
||||
}
|
||||
|
||||
public void updateActionBar() {
|
||||
final ActionBar actionBar = getActionBar();
|
||||
|
||||
actionBar.setDisplayShowHomeEnabled(true);
|
||||
|
||||
final boolean showIndicator = !mShowAsDialog && (mState.action != ACTION_MANAGE);
|
||||
actionBar.setDisplayHomeAsUpEnabled(showIndicator);
|
||||
if (mDrawerToggle != null) {
|
||||
mDrawerToggle.setDrawerIndicatorEnabled(showIndicator);
|
||||
}
|
||||
|
||||
if (isRootsDrawerOpen()) {
|
||||
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
|
||||
actionBar.setIcon(new ColorDrawable());
|
||||
|
||||
if (mRootsToolbar != null) {
|
||||
if (mState.action == ACTION_OPEN || mState.action == ACTION_GET_CONTENT
|
||||
|| mState.action == ACTION_OPEN_TREE) {
|
||||
actionBar.setTitle(R.string.title_open);
|
||||
mRootsToolbar.setTitle(R.string.title_open);
|
||||
} else if (mState.action == ACTION_CREATE) {
|
||||
actionBar.setTitle(R.string.title_save);
|
||||
mRootsToolbar.setTitle(R.string.title_save);
|
||||
}
|
||||
} else {
|
||||
final RootInfo root = getCurrentRoot();
|
||||
actionBar.setIcon(root != null ? root.loadIcon(this) : null);
|
||||
}
|
||||
|
||||
final RootInfo root = getCurrentRoot();
|
||||
final boolean showRootIcon = mShowAsDialog || (mState.action == ACTION_MANAGE);
|
||||
if (showRootIcon) {
|
||||
mToolbar.setNavigationIcon(root != null ? root.loadIcon(this) : null);
|
||||
mToolbar.setNavigationOnClickListener(null);
|
||||
} else {
|
||||
mToolbar.setNavigationIcon(R.drawable.ic_hamburger);
|
||||
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
setRootsDrawerOpen(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (mSearchExpanded) {
|
||||
mToolbar.setTitle(null);
|
||||
mToolbarStack.setVisibility(View.GONE);
|
||||
mToolbarStack.setAdapter(null);
|
||||
} else {
|
||||
if (mState.stack.size() <= 1) {
|
||||
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
|
||||
actionBar.setTitle(root.title);
|
||||
mToolbar.setTitle(root.title);
|
||||
mToolbarStack.setVisibility(View.GONE);
|
||||
mToolbarStack.setAdapter(null);
|
||||
} else {
|
||||
mToolbar.setTitle(null);
|
||||
mToolbarStack.setVisibility(View.VISIBLE);
|
||||
mToolbarStack.setAdapter(mStackAdapter);
|
||||
|
||||
mIgnoreNextNavigation = true;
|
||||
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
|
||||
actionBar.setTitle(null);
|
||||
actionBar.setListNavigationCallbacks(mStackAdapter, mStackListener);
|
||||
actionBar.setSelectedNavigationItem(mStackAdapter.getCount() - 1);
|
||||
mToolbarStack.setSelection(mStackAdapter.getCount() - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -480,6 +472,7 @@ public class DocumentsActivity extends Activity {
|
||||
mSearchView.setOnQueryTextListener(new OnQueryTextListener() {
|
||||
@Override
|
||||
public boolean onQueryTextSubmit(String query) {
|
||||
mSearchExpanded = true;
|
||||
mState.currentSearch = query;
|
||||
mSearchView.clearFocus();
|
||||
onCurrentDirectoryChanged(ANIM_NONE);
|
||||
@@ -495,11 +488,14 @@ public class DocumentsActivity extends Activity {
|
||||
searchMenu.setOnActionExpandListener(new OnActionExpandListener() {
|
||||
@Override
|
||||
public boolean onMenuItemActionExpand(MenuItem item) {
|
||||
mSearchExpanded = true;
|
||||
updateActionBar();
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMenuItemActionCollapse(MenuItem item) {
|
||||
mSearchExpanded = false;
|
||||
if (mIgnoreNextCollapse) {
|
||||
mIgnoreNextCollapse = false;
|
||||
return true;
|
||||
@@ -514,6 +510,7 @@ public class DocumentsActivity extends Activity {
|
||||
mSearchView.setOnCloseListener(new SearchView.OnCloseListener() {
|
||||
@Override
|
||||
public boolean onClose() {
|
||||
mSearchExpanded = false;
|
||||
if (mIgnoreNextClose) {
|
||||
mIgnoreNextClose = false;
|
||||
return false;
|
||||
@@ -545,18 +542,6 @@ public class DocumentsActivity extends Activity {
|
||||
final MenuItem list = menu.findItem(R.id.menu_list);
|
||||
final MenuItem settings = menu.findItem(R.id.menu_settings);
|
||||
|
||||
// Open drawer means we hide most actions
|
||||
if (isRootsDrawerOpen()) {
|
||||
createDir.setVisible(false);
|
||||
search.setVisible(false);
|
||||
sort.setVisible(false);
|
||||
grid.setVisible(false);
|
||||
list.setVisible(false);
|
||||
mIgnoreNextCollapse = true;
|
||||
search.collapseActionView();
|
||||
return true;
|
||||
}
|
||||
|
||||
sort.setVisible(cwd != null);
|
||||
grid.setVisible(mState.derivedMode != MODE_GRID);
|
||||
list.setVisible(mState.derivedMode != MODE_LIST);
|
||||
@@ -730,7 +715,7 @@ public class DocumentsActivity extends Activity {
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
if (convertView == null) {
|
||||
convertView = LayoutInflater.from(parent.getContext())
|
||||
.inflate(R.layout.item_title, parent, false);
|
||||
.inflate(R.layout.item_subdir_title, parent, false);
|
||||
}
|
||||
|
||||
final TextView title = (TextView) convertView.findViewById(android.R.id.title);
|
||||
@@ -743,8 +728,6 @@ public class DocumentsActivity extends Activity {
|
||||
title.setText(doc.displayName);
|
||||
}
|
||||
|
||||
// No padding when shown in actionbar
|
||||
convertView.setPadding(0, 0, 0, 0);
|
||||
return convertView;
|
||||
}
|
||||
|
||||
@@ -752,7 +735,7 @@ public class DocumentsActivity extends Activity {
|
||||
public View getDropDownView(int position, View convertView, ViewGroup parent) {
|
||||
if (convertView == null) {
|
||||
convertView = LayoutInflater.from(parent.getContext())
|
||||
.inflate(R.layout.item_title, parent, false);
|
||||
.inflate(R.layout.item_subdir, parent, false);
|
||||
}
|
||||
|
||||
final ImageView subdir = (ImageView) convertView.findViewById(R.id.subdir);
|
||||
@@ -772,20 +755,24 @@ public class DocumentsActivity extends Activity {
|
||||
}
|
||||
};
|
||||
|
||||
private OnNavigationListener mStackListener = new OnNavigationListener() {
|
||||
private OnItemSelectedListener mStackListener = new OnItemSelectedListener() {
|
||||
@Override
|
||||
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
|
||||
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
||||
if (mIgnoreNextNavigation) {
|
||||
mIgnoreNextNavigation = false;
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
|
||||
while (mState.stack.size() > itemPosition + 1) {
|
||||
while (mState.stack.size() > position + 1) {
|
||||
mState.stackTouched = true;
|
||||
mState.stack.pop();
|
||||
}
|
||||
onCurrentDirectoryChanged(ANIM_UP);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNothingSelected(AdapterView<?> parent) {
|
||||
// Ignored
|
||||
}
|
||||
};
|
||||
|
||||
|
||||