diff options
| author | 2023-04-21 02:23:11 +0000 | |
|---|---|---|
| committer | 2023-04-24 13:49:49 +0000 | |
| commit | c393f91bcf5976d2db378b1da5a82a37ddc8e6c1 (patch) | |
| tree | ef1e32e0a30ac3f42d8d13bed22a3c940570954b /java | |
| parent | 395868a876907174d4923823048bd1f81a1987a7 (diff) | |
Align file sharing UI with mocks.
Mocks:
https://www.figma.com/file/JVIcmg4OhWuO5Vc1UdPVxe/Sharesheet-(U)?node-id=66-5067&t=GK4LwE6SDaQyVyov-0
- Split text into two lines (when needed)
- Change headline to "files" instead of "items".
- Shaded background around content.
- Just use one icon for now (this will be updated later).
Bug: 279070016
Test: atest UnbundledChooserActivityTest
Test: atest HeadlineGeneratorImplTest
Change-Id: I696b4bc21250290253b78b56c6fc20278e939a8a
Diffstat (limited to 'java')
10 files changed, 90 insertions, 94 deletions
diff --git a/java/res/layout/chooser_grid_preview_file.xml b/java/res/layout/chooser_grid_preview_file.xml index 40ab2f0b..9fd90f10 100644 --- a/java/res/layout/chooser_grid_preview_file.xml +++ b/java/res/layout/chooser_grid_preview_file.xml @@ -27,41 +27,53 @@ android:paddingBottom="@dimen/chooser_view_spacing" android:background="?android:attr/colorBackground"> - <include layout="@layout/chooser_headline_row" /> + <include layout="@layout/chooser_headline_row"/> - <LinearLayout - android:layout_width="@dimen/chooser_preview_width" - android:layout_height="wrap_content" - android:layout_gravity="center" - android:orientation="horizontal" - android:paddingLeft="@dimen/chooser_edge_margin_normal" - android:paddingRight="@dimen/chooser_edge_margin_normal" - android:layout_marginBottom="@dimen/chooser_view_spacing" - android:id="@androidprv:id/content_preview_file_layout"> - - <ImageView - android:id="@androidprv:id/content_preview_file_icon" - android:layout_width="36dp" - android:layout_height="36dp" - android:layout_marginRight="16dp" - android:adjustViewBounds="true" - android:layout_gravity="center_vertical" - android:gravity="center" - android:scaleType="fitCenter" /> - <TextView - android:id="@androidprv:id/content_preview_filename" - android:layout_width="0dp" - android:layout_weight="1" + <RelativeLayout + android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_gravity="center_vertical" - android:ellipsize="middle" - android:gravity="start|top" - android:paddingRight="24dp" - android:singleLine="true" - android:textAppearance="@style/TextAppearance.ChooserDefault" /> - </LinearLayout> + android:layout_gravity="center" + android:layout_marginHorizontal="@dimen/chooser_edge_margin_normal" + android:layout_marginBottom="@dimen/chooser_view_spacing" + android:padding="@dimen/chooser_edge_margin_normal" + android:background="@drawable/chooser_content_preview_rounded" + android:id="@androidprv:id/content_preview_file_layout"> + + <ImageView + android:id="@+id/content_preview_file_icon" + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_marginEnd="16dp" + android:layout_alignParentStart="true" + android:layout_centerVertical="true" + android:src="@drawable/ic_file_copy" + android:scaleType="fitCenter"/> + <TextView + android:id="@+id/content_preview_filename" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_toEndOf="@id/content_preview_file_icon" + android:layout_alignParentTop="true" + android:layout_alignWithParentIfMissing="true" + android:ellipsize="middle" + android:gravity="start|top" + android:singleLine="true" + android:textStyle="bold" + android:textAppearance="@style/TextAppearance.ChooserDefault"/> + + <TextView + android:id="@+id/content_preview_more_files" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_toEndOf="@id/content_preview_file_icon" + android:layout_below="@id/content_preview_filename" + android:layout_alignWithParentIfMissing="true" + android:gravity="start|top" + android:singleLine="true" + android:textAppearance="@style/TextAppearance.ChooserDefault"/> + </RelativeLayout> - <include layout="@layout/chooser_action_row" /> + <include layout="@layout/chooser_action_row"/> </LinearLayout> diff --git a/java/res/layout/chooser_grid_preview_text.xml b/java/res/layout/chooser_grid_preview_text.xml index e22cfbd2..3a390025 100644 --- a/java/res/layout/chooser_grid_preview_text.xml +++ b/java/res/layout/chooser_grid_preview_text.xml @@ -32,7 +32,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" - android:orientation="horizontal" android:layout_marginLeft="@dimen/chooser_edge_margin_normal" android:layout_marginRight="@dimen/chooser_edge_margin_normal" android:layout_marginBottom="@dimen/chooser_view_spacing" diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml index 1648831c..8a24b349 100644 --- a/java/res/values/strings.xml +++ b/java/res/values/strings.xml @@ -124,12 +124,6 @@ <!-- Notification action for editing a screenshot (drawing on it, cropping it, etc) --> <string name="screenshot_edit">Edit</string> - <string name="file_count">{count, plural, - =1 {{file_name} + # file} - other {{file_name} + # files} - } - </string> - <!-- Represents a number of other files also being shared; used as an item at the end of a list --> <string name="other_files">{count, plural, =1 {+ # file} @@ -137,6 +131,13 @@ } </string> + <!-- Text label indicating the number of other files also being shared --> + <string name="more_files">{count, plural, + =1 {+ # more file} + other {+ # more files} + } + </string> + <!-- Title atop a sharing UI indicating that text is being shared [CHAR_LIMIT=50] --> <string name="sharing_text">Sharing text</string> <!-- Title atop a sharing UI indicating that a link (URL) is being shared [CHAR_LIMIT=50] --> @@ -153,11 +154,11 @@ other {Sharing # videos} } </string> - <!-- Title atop a sharing UI indicating that some number of items are being shared + <!-- Title atop a sharing UI indicating that some number of files are being shared (for example: sharing a mixture of photos and videos [CHAR_LIMIT=50] --> - <string name="sharing_items">{count, plural, - =1 {Sharing # item} - other {Sharing # items} + <string name="sharing_files">{count, plural, + =1 {Sharing # file} + other {Sharing # files} } </string> <string name="sharing_images_with_text">{count, plural, diff --git a/java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java index e9d65eed..d7d35100 100644 --- a/java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java +++ b/java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java @@ -22,7 +22,6 @@ import android.util.PluralsMessageFormatter; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.ImageView; import android.widget.TextView; import com.android.intentresolver.R; @@ -69,7 +68,7 @@ class FileContentPreviewUi extends ContentPreviewUi { final int uriCount = mFiles.size(); - displayHeadline(contentPreviewLayout, mHeadlineGenerator.getItemsHeadline(mFiles.size())); + displayHeadline(contentPreviewLayout, mHeadlineGenerator.getFilesHeadline(mFiles.size())); if (uriCount == 0) { contentPreviewLayout.setVisibility(View.GONE); @@ -79,26 +78,21 @@ class FileContentPreviewUi extends ContentPreviewUi { } FileInfo fileInfo = mFiles.get(0); - final CharSequence fileName; - final int iconId; - if (uriCount == 1) { - fileName = fileInfo.getName(); - iconId = R.drawable.chooser_file_generic; - } else { + TextView fileNameView = contentPreviewLayout.findViewById( + R.id.content_preview_filename); + fileNameView.setText(fileInfo.getName()); + + TextView secondLine = contentPreviewLayout.findViewById( + R.id.content_preview_more_files); + if (uriCount > 1) { int remUriCount = uriCount - 1; Map<String, Object> arguments = new HashMap<>(); arguments.put(PLURALS_COUNT, remUriCount); - arguments.put(PLURALS_FILE_NAME, fileInfo.getName()); - fileName = PluralsMessageFormatter.format(resources, arguments, R.string.file_count); - iconId = R.drawable.ic_file_copy; + secondLine.setText( + PluralsMessageFormatter.format(resources, arguments, R.string.more_files)); + } else { + secondLine.setVisibility(View.GONE); } - TextView fileNameView = contentPreviewLayout.findViewById( - com.android.internal.R.id.content_preview_filename); - fileNameView.setText(fileName); - - ImageView fileIconView = contentPreviewLayout.findViewById( - com.android.internal.R.id.content_preview_file_icon); - fileIconView.setImageResource(iconId); final ActionRow actionRow = contentPreviewLayout.findViewById(com.android.internal.R.id.chooser_action_row); diff --git a/java/src/com/android/intentresolver/contentpreview/FilesPlusTextContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/FilesPlusTextContentPreviewUi.java index 5174234a..12843e0a 100644 --- a/java/src/com/android/intentresolver/contentpreview/FilesPlusTextContentPreviewUi.java +++ b/java/src/com/android/intentresolver/contentpreview/FilesPlusTextContentPreviewUi.java @@ -153,7 +153,7 @@ class FilesPlusTextContentPreviewUi extends ContentPreviewUi { } else if (mAllVideos) { headline = mHeadlineGenerator.getVideosHeadline(mFiles.size()); } else { - headline = mHeadlineGenerator.getItemsHeadline(mFiles.size()); + headline = mHeadlineGenerator.getFilesHeadline(mFiles.size()); } } diff --git a/java/src/com/android/intentresolver/contentpreview/HeadlineGenerator.kt b/java/src/com/android/intentresolver/contentpreview/HeadlineGenerator.kt index ad2a7ada..5f87c924 100644 --- a/java/src/com/android/intentresolver/contentpreview/HeadlineGenerator.kt +++ b/java/src/com/android/intentresolver/contentpreview/HeadlineGenerator.kt @@ -16,8 +16,6 @@ package com.android.intentresolver.contentpreview -private const val PLURALS_COUNT = "count" - /** * HeadlineGenerator generates the text to show at the top of the sharesheet as a brief * description of the content being shared. @@ -35,5 +33,5 @@ interface HeadlineGenerator { fun getVideosHeadline(count: Int): String - fun getItemsHeadline(count: Int): String + fun getFilesHeadline(count: Int): String } diff --git a/java/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImpl.kt b/java/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImpl.kt index a6b782ad..1aace8c3 100644 --- a/java/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImpl.kt +++ b/java/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImpl.kt @@ -56,8 +56,8 @@ class HeadlineGeneratorImpl(private val context: Context) : HeadlineGenerator { return getPluralString(R.string.sharing_videos, count) } - override fun getItemsHeadline(count: Int): String { - return getPluralString(R.string.sharing_items, count) + override fun getFilesHeadline(count: Int): String { + return getPluralString(R.string.sharing_files, count) } private fun getPluralString(@StringRes templateResource: Int, count: Int): String { diff --git a/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java index 6f1be116..8aa8026c 100644 --- a/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java +++ b/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java @@ -130,7 +130,7 @@ class UnifiedContentPreviewUi extends ContentPreviewUi { contentPreviewLayout, mHeadlineGenerator.getVideosHeadline(mFiles.size())); } else { displayHeadline( - contentPreviewLayout, mHeadlineGenerator.getItemsHeadline(mFiles.size())); + contentPreviewLayout, mHeadlineGenerator.getFilesHeadline(mFiles.size())); } return contentPreviewLayout; diff --git a/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java b/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java index 385f9fd8..cbc8d53e 100644 --- a/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java +++ b/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java @@ -1203,12 +1203,9 @@ public class UnbundledChooserActivityTest { setupResolverControllers(resolvedComponentInfos); mActivityRule.launchActivity(Intent.createChooser(sendIntent, null)); waitForIdle(); - onView(withId(com.android.internal.R.id.content_preview_filename)) - .check(matches(isDisplayed())); - onView(withId(com.android.internal.R.id.content_preview_filename)) - .check(matches(withText("app.pdf"))); - onView(withId(com.android.internal.R.id.content_preview_file_icon)) - .check(matches(isDisplayed())); + onView(withId(R.id.content_preview_filename)).check(matches(isDisplayed())); + onView(withId(R.id.content_preview_filename)).check(matches(withText("app.pdf"))); + onView(withId(R.id.content_preview_file_icon)).check(matches(isDisplayed())); } @@ -1228,12 +1225,11 @@ public class UnbundledChooserActivityTest { setupResolverControllers(resolvedComponentInfos); mActivityRule.launchActivity(Intent.createChooser(sendIntent, null)); waitForIdle(); - onView(withId(com.android.internal.R.id.content_preview_filename)) - .check(matches(isDisplayed())); - onView(withId(com.android.internal.R.id.content_preview_filename)) - .check(matches(withText("app.pdf + 2 files"))); - onView(withId(com.android.internal.R.id.content_preview_file_icon)) - .check(matches(isDisplayed())); + onView(withId(R.id.content_preview_filename)).check(matches(isDisplayed())); + onView(withId(R.id.content_preview_filename)).check(matches(withText("app.pdf"))); + onView(withId(R.id.content_preview_more_files)).check(matches(isDisplayed())); + onView(withId(R.id.content_preview_more_files)).check(matches(withText("+ 2 more files"))); + onView(withId(R.id.content_preview_file_icon)).check(matches(isDisplayed())); } @Test @@ -1252,12 +1248,9 @@ public class UnbundledChooserActivityTest { mActivityRule.launchActivity(Intent.createChooser(sendIntent, null)); waitForIdle(); - onView(withId(com.android.internal.R.id.content_preview_filename)) - .check(matches(isDisplayed())); - onView(withId(com.android.internal.R.id.content_preview_filename)) - .check(matches(withText("app.pdf"))); - onView(withId(com.android.internal.R.id.content_preview_file_icon)) - .check(matches(isDisplayed())); + onView(withId(R.id.content_preview_filename)).check(matches(isDisplayed())); + onView(withId(R.id.content_preview_filename)).check(matches(withText("app.pdf"))); + onView(withId(R.id.content_preview_file_icon)).check(matches(isDisplayed())); } @Test @@ -1283,12 +1276,11 @@ public class UnbundledChooserActivityTest { mActivityRule.launchActivity(Intent.createChooser(sendIntent, null)); waitForIdle(); - onView(withId(com.android.internal.R.id.content_preview_filename)) - .check(matches(isDisplayed())); - onView(withId(com.android.internal.R.id.content_preview_filename)) - .check(matches(withText("app.pdf + 1 file"))); - onView(withId(com.android.internal.R.id.content_preview_file_icon)) - .check(matches(isDisplayed())); + onView(withId(R.id.content_preview_filename)).check(matches(isDisplayed())); + onView(withId(R.id.content_preview_filename)).check(matches(withText("app.pdf"))); + onView(withId(R.id.content_preview_more_files)).check(matches(isDisplayed())); + onView(withId(R.id.content_preview_more_files)).check(matches(withText("+ 1 more file"))); + onView(withId(R.id.content_preview_file_icon)).check(matches(isDisplayed())); } @Test diff --git a/java/tests/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImplTest.kt b/java/tests/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImplTest.kt index aac6caa7..a65280e5 100644 --- a/java/tests/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImplTest.kt +++ b/java/tests/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImplTest.kt @@ -55,7 +55,7 @@ class HeadlineGeneratorImplTest { assertThat(generator.getVideosHeadline(1)).isEqualTo("Sharing video") assertThat(generator.getVideosHeadline(4)).isEqualTo("Sharing 4 videos") - assertThat(generator.getItemsHeadline(1)).isEqualTo("Sharing 1 item") - assertThat(generator.getItemsHeadline(4)).isEqualTo("Sharing 4 items") + assertThat(generator.getFilesHeadline(1)).isEqualTo("Sharing 1 file") + assertThat(generator.getFilesHeadline(4)).isEqualTo("Sharing 4 files") } } |