diff options
| author | 2023-04-18 16:57:03 +0000 | |
|---|---|---|
| committer | 2023-04-18 16:57:03 +0000 | |
| commit | 3f3d1920cd37bd4d666dfb44e5ac6e87ab260c49 (patch) | |
| tree | ca64c565134fd90720ac52e5a58fd9b37969497b | |
| parent | 4e21b8eded1ac70840e3639e2922d70337d05d0d (diff) | |
| parent | afa77b6e52c40548b55142e3af69e7a90000df7e (diff) | |
Merge "Show preview content in landscape." into udc-dev am: afa77b6e52
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/IntentResolver/+/22679182
Change-Id: I76b8361749fc59a76dba44cdf6a4d3fdbc4b5304
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | AndroidManifest.xml | 2 | ||||
| -rw-r--r-- | java/res/layout/chooser_action_button.xml | 31 | ||||
| -rw-r--r-- | java/res/layout/chooser_action_row.xml | 4 | ||||
| -rw-r--r-- | java/res/layout/chooser_grid_preview_image.xml | 2 | ||||
| -rw-r--r-- | java/res/layout/chooser_grid_preview_text.xml | 2 | ||||
| -rw-r--r-- | java/res/values-land/bools.xml (renamed from java/res/values-h480dp/bools.xml) | 6 | ||||
| -rw-r--r-- | java/res/values-land/dimens.xml | 4 | ||||
| -rw-r--r-- | java/res/values-land/integers.xml | 19 | ||||
| -rw-r--r-- | java/res/values-sw600dp/bools.xml | 20 | ||||
| -rw-r--r-- | java/res/values-sw600dp/dimens.xml | 5 | ||||
| -rw-r--r-- | java/res/values-sw600dp/integers.xml | 19 | ||||
| -rw-r--r-- | java/res/values/attrs.xml | 4 | ||||
| -rw-r--r-- | java/res/values/bools.xml | 2 | ||||
| -rw-r--r-- | java/res/values/dimens.xml | 2 | ||||
| -rw-r--r-- | java/res/values/integers.xml | 19 | ||||
| -rw-r--r-- | java/src/com/android/intentresolver/ChooserActivity.java | 3 | ||||
| -rw-r--r-- | java/src/com/android/intentresolver/widget/ChooserActionRow.kt | 81 | ||||
| -rw-r--r-- | java/src/com/android/intentresolver/widget/ScrollableActionRow.kt | 21 |
18 files changed, 116 insertions, 130 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 5228827d..8115b2b2 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -56,7 +56,7 @@ android:excludeFromRecents="true" android:documentLaunchMode="never" android:relinquishTaskIdentity="true" - android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|keyboard|keyboardHidden" + android:configChanges="screenSize|smallestScreenSize|screenLayout|keyboard|keyboardHidden" android:visibleToInstantApps="true" android:exported="true" android:enabled="false"> diff --git a/java/res/layout/chooser_action_button.xml b/java/res/layout/chooser_action_button.xml deleted file mode 100644 index 2b68ccca..00000000 --- a/java/res/layout/chooser_action_button.xml +++ /dev/null @@ -1,31 +0,0 @@ -<!-- - ~ Copyright (C) 2019 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 - --> - -<Button xmlns:android="http://schemas.android.com/apk/res/android" - android:gravity="center_vertical|start" - android:paddingStart="12dp" - android:paddingEnd="12dp" - android:drawablePadding="8dp" - android:textColor="?android:attr/textColorPrimary" - android:textSize="12sp" - android:maxWidth="192dp" - android:singleLine="true" - android:clickable="true" - android:background="@drawable/chooser_action_button_bg" - android:drawableTint="?android:attr/textColorPrimary" - android:drawableTintMode="src_in" - style="?android:attr/borderlessButtonStyle" - /> diff --git a/java/res/layout/chooser_action_row.xml b/java/res/layout/chooser_action_row.xml index 303426c4..f77b0e68 100644 --- a/java/res/layout/chooser_action_row.xml +++ b/java/res/layout/chooser_action_row.xml @@ -16,7 +16,8 @@ <merge xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"> + xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto"> <View android:layout_width="match_parent" @@ -29,6 +30,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" + app:horizontalActions="@bool/horizontal_actions" android:gravity="center"/> <View diff --git a/java/res/layout/chooser_grid_preview_image.xml b/java/res/layout/chooser_grid_preview_image.xml index b87cecda..afb0db2a 100644 --- a/java/res/layout/chooser_grid_preview_image.xml +++ b/java/res/layout/chooser_grid_preview_image.xml @@ -53,7 +53,7 @@ android:layout_gravity="center_vertical" android:layout_marginStart="@dimen/chooser_edge_margin_normal_half" android:layout_marginEnd="@dimen/chooser_edge_margin_normal_half" - android:maxLines="6" + android:maxLines="@integer/text_preview_lines" android:ellipsize="end" android:linksClickable="false" android:visibility="gone" diff --git a/java/res/layout/chooser_grid_preview_text.xml b/java/res/layout/chooser_grid_preview_text.xml index 89e961e8..e22cfbd2 100644 --- a/java/res/layout/chooser_grid_preview_text.xml +++ b/java/res/layout/chooser_grid_preview_text.xml @@ -80,7 +80,7 @@ android:textColor="?android:attr/textColorPrimary" android:textAlignment="gravity" android:textDirection="locale" - android:maxLines="3" + android:maxLines="@integer/text_preview_lines" android:focusable="true"/> </RelativeLayout> diff --git a/java/res/values-h480dp/bools.xml b/java/res/values-land/bools.xml index 7896d9bf..761de1ea 100644 --- a/java/res/values-h480dp/bools.xml +++ b/java/res/values-land/bools.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - ~ Copyright (C) 2020 The Android Open Source Project + ~ Copyright (C) 2023 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. @@ -16,5 +16,5 @@ --> <resources> - <bool name="resolver_landscape_phone">false</bool> -</resources>
\ No newline at end of file + <bool name="horizontal_actions">false</bool> +</resources> diff --git a/java/res/values-land/dimens.xml b/java/res/values-land/dimens.xml index 7e3fb9cb..e3169efd 100644 --- a/java/res/values-land/dimens.xml +++ b/java/res/values-land/dimens.xml @@ -20,4 +20,8 @@ <resources> <dimen name="chooser_preview_width">412dp</dimen> + <dimen name="chooser_preview_image_height_tall">64dp</dimen> + <dimen name="chooser_view_spacing">8dp</dimen> + <integer name="text_preview_lines">1</integer> + <bool name="horizontal_actions">true</bool> </resources> diff --git a/java/res/values-land/integers.xml b/java/res/values-land/integers.xml new file mode 100644 index 00000000..2e310d87 --- /dev/null +++ b/java/res/values-land/integers.xml @@ -0,0 +1,19 @@ +<!-- + ~ Copyright (C) 2023 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. + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android"> + <integer name="text_preview_lines">1</integer> +</resources> diff --git a/java/res/values-sw600dp/bools.xml b/java/res/values-sw600dp/bools.xml new file mode 100644 index 00000000..761de1ea --- /dev/null +++ b/java/res/values-sw600dp/bools.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2023 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. + --> + +<resources> + <bool name="horizontal_actions">false</bool> +</resources> diff --git a/java/res/values-sw600dp/dimens.xml b/java/res/values-sw600dp/dimens.xml index b397630e..6cd29747 100644 --- a/java/res/values-sw600dp/dimens.xml +++ b/java/res/values-sw600dp/dimens.xml @@ -20,5 +20,8 @@ <resources> <dimen name="chooser_width">624dp</dimen> - + <dimen name="chooser_preview_image_height_tall">192dp</dimen> + <dimen name="chooser_view_spacing">18dp</dimen> + <integer name="text_preview_lines">3</integer> + <bool name="horizontal_actions">false</bool> </resources> diff --git a/java/res/values-sw600dp/integers.xml b/java/res/values-sw600dp/integers.xml new file mode 100644 index 00000000..c1693057 --- /dev/null +++ b/java/res/values-sw600dp/integers.xml @@ -0,0 +1,19 @@ +<!-- + ~ Copyright (C) 2023 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. + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android"> + <integer name="text_preview_lines">3</integer> +</resources> diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml index 67acb3ae..c96221ec 100644 --- a/java/res/values/attrs.xml +++ b/java/res/values/attrs.xml @@ -51,4 +51,8 @@ <attr name="itemOuterSpacing" format="dimension" /> <attr name="maxWidthHint" format="dimension" /> </declare-styleable> + + <declare-styleable name="ScrollableActionRow"> + <attr name="horizontalActions" format="boolean" /> + </declare-styleable> </resources> diff --git a/java/res/values/bools.xml b/java/res/values/bools.xml index a84081b6..641620d7 100644 --- a/java/res/values/bools.xml +++ b/java/res/values/bools.xml @@ -15,5 +15,5 @@ --> <resources> - <bool name="resolver_landscape_phone">@*android:bool/resolver_landscape_phone</bool> + <bool name="horizontal_actions">false</bool> </resources> diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml index 8636f742..947351d8 100644 --- a/java/res/values/dimens.xml +++ b/java/res/values/dimens.xml @@ -28,7 +28,6 @@ <dimen name="chooser_preview_image_font_size">20sp</dimen> <dimen name="chooser_preview_image_border">1dp</dimen> <dimen name="chooser_preview_image_width">120dp</dimen> - <dimen name="chooser_preview_image_height">104dp</dimen> <dimen name="chooser_preview_image_height_tall">192dp</dimen> <dimen name="chooser_preview_image_max_dimen">200dp</dimen> <dimen name="chooser_preview_width">-1px</dimen> @@ -54,7 +53,6 @@ <dimen name="resolver_empty_state_container_padding_bottom">8dp</dimen> <dimen name="resolver_profile_tab_margin">4dp</dimen> - <dimen name="chooser_action_button_icon_size">18dp</dimen> <dimen name="chooser_action_view_icon_size">22dp</dimen> <dimen name="chooser_action_margin">0dp</dimen> </resources> diff --git a/java/res/values/integers.xml b/java/res/values/integers.xml new file mode 100644 index 00000000..c1693057 --- /dev/null +++ b/java/res/values/integers.xml @@ -0,0 +1,19 @@ +<!-- + ~ Copyright (C) 2023 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. + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android"> + <integer name="text_preview_lines">3</integer> +</resources> diff --git a/java/src/com/android/intentresolver/ChooserActivity.java b/java/src/com/android/intentresolver/ChooserActivity.java index 917a4e5d..318e9b91 100644 --- a/java/src/com/android/intentresolver/ChooserActivity.java +++ b/java/src/com/android/intentresolver/ChooserActivity.java @@ -1624,8 +1624,7 @@ public class ChooserActivity extends ResolverActivity implements * we instead show the content preview as a regular list item. */ private boolean shouldShowStickyContentPreview() { - return shouldShowStickyContentPreviewNoOrientationCheck() - && !getResources().getBoolean(R.bool.resolver_landscape_phone); + return shouldShowStickyContentPreviewNoOrientationCheck(); } private boolean shouldShowStickyContentPreviewNoOrientationCheck() { diff --git a/java/src/com/android/intentresolver/widget/ChooserActionRow.kt b/java/src/com/android/intentresolver/widget/ChooserActionRow.kt deleted file mode 100644 index a4656bb5..00000000 --- a/java/src/com/android/intentresolver/widget/ChooserActionRow.kt +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright (C) 2022 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.intentresolver.widget - -import android.annotation.LayoutRes -import android.content.Context -import android.os.Parcelable -import android.util.AttributeSet -import android.view.LayoutInflater -import android.widget.Button -import android.widget.LinearLayout -import com.android.intentresolver.R -import com.android.intentresolver.widget.ActionRow.Action - -class ChooserActionRow : LinearLayout, ActionRow { - constructor(context: Context) : this(context, null) - constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0) - constructor( - context: Context, attrs: AttributeSet?, defStyleAttr: Int - ) : this(context, attrs, defStyleAttr, 0) - - constructor( - context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int - ) : super(context, attrs, defStyleAttr, defStyleRes) { - orientation = HORIZONTAL - } - - @LayoutRes - private val itemLayout = R.layout.chooser_action_button - private val itemMargin = - context.resources.getDimensionPixelSize(R.dimen.resolver_icon_margin) / 2 - private var actions: List<Action> = emptyList() - - override fun onRestoreInstanceState(state: Parcelable?) { - super.onRestoreInstanceState(state) - setActions(actions) - } - - override fun setActions(actions: List<Action>) { - removeAllViews() - this.actions = ArrayList(actions) - for (action in actions) { - addAction(action) - } - } - - private fun addAction(action: Action) { - val b = LayoutInflater.from(context).inflate(itemLayout, null) as Button - if (action.icon != null) { - val size = resources - .getDimensionPixelSize(R.dimen.chooser_action_button_icon_size) - action.icon.setBounds(0, 0, size, size) - b.setCompoundDrawablesRelative(action.icon, null, null, null) - } - b.text = action.label ?: "" - b.setOnClickListener { - action.onClicked.run() - } - b.id = action.id - addView(b) - } - - override fun generateDefaultLayoutParams(): LayoutParams = - super.generateDefaultLayoutParams().apply { - setMarginsRelative(itemMargin, 0, itemMargin, 0) - } -} diff --git a/java/src/com/android/intentresolver/widget/ScrollableActionRow.kt b/java/src/com/android/intentresolver/widget/ScrollableActionRow.kt index f2a8b9e8..8fdb609e 100644 --- a/java/src/com/android/intentresolver/widget/ScrollableActionRow.kt +++ b/java/src/com/android/intentresolver/widget/ScrollableActionRow.kt @@ -35,9 +35,16 @@ class ScrollableActionRow : RecyclerView, ActionRow { ) : super(context, attrs, defStyleAttr) { layoutManager = LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false) adapter = Adapter(context) + + context.obtainStyledAttributes( + attrs, R.styleable.ScrollableActionRow, defStyleAttr, 0 + ).use { a -> + horizontalActions = a.getBoolean(R.styleable.ScrollableActionRow_horizontalActions, false) + } } private val actionsAdapter get() = adapter as Adapter + private val horizontalActions: Boolean override fun setActions(actions: List<ActionRow.Action>) { actionsAdapter.setActions(actions) @@ -50,7 +57,7 @@ class ScrollableActionRow : RecyclerView, ActionRow { ) } - private class Adapter(private val context: Context) : RecyclerView.Adapter<ViewHolder>() { + private inner class Adapter(private val context: Context) : RecyclerView.Adapter<ViewHolder>() { private val iconSize: Int = context.resources.getDimensionPixelSize(R.dimen.chooser_action_view_icon_size) private val itemLayout = R.layout.chooser_action_view @@ -59,7 +66,7 @@ class ScrollableActionRow : RecyclerView, ActionRow { override fun onCreateViewHolder(parent: ViewGroup, type: Int): ViewHolder = ViewHolder( LayoutInflater.from(context).inflate(itemLayout, null) as TextView, - iconSize + iconSize, ) override fun onBindViewHolder(holder: ViewHolder, position: Int) { @@ -83,8 +90,8 @@ class ScrollableActionRow : RecyclerView, ActionRow { } } - private class ViewHolder( - private val view: TextView, private val iconSize: Int + private inner class ViewHolder( + private val view: TextView, private val iconSize: Int, ) : RecyclerView.ViewHolder(view) { fun bind(action: ActionRow.Action) { @@ -93,7 +100,11 @@ class ScrollableActionRow : RecyclerView, ActionRow { // some drawables (edit) does not gets tinted when set to the top of the text // with TextView#setCompoundDrawableRelative tintIcon(icon, view) - view.setCompoundDrawablesRelative(null, icon, null, null) + if (horizontalActions) { + view.setCompoundDrawablesRelative(icon, null, null, null) + } else { + view.setCompoundDrawablesRelative(null, icon, null, null) + } } view.text = action.label ?: "" view.setOnClickListener { |