Merge "Reduce paddings in landscape mode" into rvc-dev

This commit is contained in:
Antoan Angelov
2020-05-29 16:34:40 +00:00
committed by Android (Google) Code Review
8 changed files with 105 additions and 11 deletions

View File

@@ -340,6 +340,30 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter {
protected abstract void showNoWorkToPersonalIntentsEmptyState(
ResolverListAdapter activeListAdapter);
/**
* Updates padding and visibilities as a result of an orientation change.
* <p>They are not updated automatically, because the view is cached when created.
* <p>When overridden, make sure to always call the super method.
*/
void updateAfterConfigChange() {
for (int i = 0; i < getItemCount(); i++) {
ViewGroup emptyStateView = getItem(i).getEmptyStateView();
ImageView icon = emptyStateView.findViewById(R.id.resolver_empty_state_icon);
updateIconVisibility(icon, emptyStateView);
}
}
private void updateIconVisibility(ImageView icon, ViewGroup emptyStateView) {
if (isSpinnerShowing(emptyStateView)) {
icon.setVisibility(View.INVISIBLE);
} else if (mWorkProfileUserHandle != null
&& !getContext().getResources().getBoolean(R.bool.resolver_landscape_phone)) {
icon.setVisibility(View.VISIBLE);
} else {
icon.setVisibility(View.GONE);
}
}
/**
* The empty state screens are shown according to their priority:
* <ol>
@@ -441,7 +465,7 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter {
ProfileDescriptor descriptor = getItem(
userHandleToPageIndex(activeListAdapter.getUserHandle()));
descriptor.rootView.findViewById(R.id.resolver_list).setVisibility(View.GONE);
View emptyStateView = descriptor.getEmptyStateView();
ViewGroup emptyStateView = descriptor.getEmptyStateView();
resetViewVisibilitiesForWorkProfileEmptyState(emptyStateView);
emptyStateView.setVisibility(View.VISIBLE);
@@ -464,12 +488,8 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter {
button.setOnClickListener(buttonOnClick);
ImageView icon = emptyStateView.findViewById(R.id.resolver_empty_state_icon);
if (!getContext().getResources().getBoolean(R.bool.resolver_landscape_phone)) {
icon.setVisibility(View.VISIBLE);
icon.setImageResource(iconRes);
} else {
icon.setVisibility(View.GONE);
}
icon.setImageResource(iconRes);
updateIconVisibility(icon, emptyStateView);
activeListAdapter.markTabLoaded();
}
@@ -491,6 +511,11 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter {
activeListAdapter.markTabLoaded();
}
private boolean isSpinnerShowing(View emptyStateView) {
return emptyStateView.findViewById(R.id.resolver_empty_state_progress).getVisibility()
== View.VISIBLE;
}
private void showSpinner(View emptyStateView) {
emptyStateView.findViewById(R.id.resolver_empty_state_icon).setVisibility(View.INVISIBLE);
emptyStateView.findViewById(R.id.resolver_empty_state_title).setVisibility(View.INVISIBLE);

View File

@@ -642,6 +642,9 @@ public class ResolverActivity extends Activity implements
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mMultiProfilePagerAdapter.getActiveListAdapter().handlePackagesChanged();
if (isIntentPicker() && shouldShowTabs() && !useLayoutWithDefault()) {
updateIntentPickerPaddings();
}
if (mSystemWindowInsets != null) {
mResolverDrawerLayout.setPadding(mSystemWindowInsets.left, mSystemWindowInsets.top,
@@ -649,6 +652,22 @@ public class ResolverActivity extends Activity implements
}
}
private void updateIntentPickerPaddings() {
View titleCont = findViewById(R.id.title_container);
titleCont.setPadding(
titleCont.getPaddingLeft(),
titleCont.getPaddingTop(),
titleCont.getPaddingRight(),
getResources().getDimensionPixelSize(R.dimen.resolver_title_padding_bottom));
View buttonBar = findViewById(R.id.button_bar);
buttonBar.setPadding(
buttonBar.getPaddingLeft(),
getResources().getDimensionPixelSize(R.dimen.resolver_button_bar_spacing),
buttonBar.getPaddingRight(),
getResources().getDimensionPixelSize(R.dimen.resolver_button_bar_spacing));
mMultiProfilePagerAdapter.updateAfterConfigChange();
}
@Override // ResolverListCommunicator
public void sendVoiceChoicesIfNeeded() {
if (!isVoiceInteraction()) {

View File

@@ -18,6 +18,7 @@ package com.android.internal.app;
import android.annotation.Nullable;
import android.content.Context;
import android.content.res.Resources;
import android.os.UserHandle;
import android.view.LayoutInflater;
import android.view.View;
@@ -65,6 +66,24 @@ public class ResolverMultiProfilePagerAdapter extends AbstractMultiProfilePagerA
mShouldShowNoCrossProfileIntentsEmptyState = shouldShowNoCrossProfileIntentsEmptyState;
}
@Override
void updateAfterConfigChange() {
super.updateAfterConfigChange();
for (ResolverProfileDescriptor descriptor : mItems) {
View emptyStateCont =
descriptor.rootView.findViewById(R.id.resolver_empty_state_container);
Resources resources = getContext().getResources();
emptyStateCont.setPadding(
emptyStateCont.getPaddingLeft(),
resources.getDimensionPixelSize(
R.dimen.resolver_empty_state_container_padding_top),
emptyStateCont.getPaddingRight(),
resources.getDimensionPixelSize(
R.dimen.resolver_empty_state_container_padding_bottom));
}
}
private ResolverProfileDescriptor createProfileDescriptor(
ResolverListAdapter adapter) {
final LayoutInflater inflater = LayoutInflater.from(getContext());

View File

@@ -27,8 +27,8 @@
android:id="@+id/resolver_empty_state_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="48dp"
android:paddingBottom="48dp"
android:paddingTop="@dimen/resolver_empty_state_container_padding_top"
android:paddingBottom="@dimen/resolver_empty_state_container_padding_bottom"
android:gravity="center_horizontal">
<ImageView
android:id="@+id/resolver_empty_state_icon"

View File

@@ -26,6 +26,7 @@
android:id="@id/contentPanel">
<RelativeLayout
android:id="@+id/title_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alwaysShow="true"
@@ -33,7 +34,7 @@
android:paddingTop="@dimen/resolver_small_margin"
android:paddingStart="@dimen/resolver_edge_margin"
android:paddingEnd="@dimen/resolver_edge_margin"
android:paddingBottom="@dimen/resolver_edge_margin"
android:paddingBottom="@dimen/resolver_title_padding_bottom"
android:background="@drawable/bottomsheet_background">
<TextView

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
~ Copyright (C) 2020 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>
<dimen name="resolver_empty_state_container_padding_top">48dp</dimen>
<dimen name="resolver_empty_state_container_padding_bottom">48dp</dimen>
<dimen name="resolver_title_padding_bottom">@dimen/resolver_edge_margin</dimen>
<dimen name="resolver_button_bar_spacing">8dp</dimen>
</resources>

View File

@@ -813,7 +813,7 @@
<dimen name="chooser_icon_size">56dp</dimen>
<dimen name="chooser_badge_size">22dp</dimen>
<dimen name="resolver_icon_size">32dp</dimen>
<dimen name="resolver_button_bar_spacing">8dp</dimen>
<dimen name="resolver_button_bar_spacing">0dp</dimen>
<dimen name="resolver_badge_size">18dp</dimen>
<dimen name="resolver_icon_margin">16dp</dimen>
<dimen name="resolver_small_margin">18dp</dimen>
@@ -826,6 +826,9 @@
<dimen name="resolver_max_collapsed_height_with_default">144dp</dimen>
<dimen name="resolver_max_collapsed_height_with_default_with_tabs">300dp</dimen>
<dimen name="resolver_tab_text_size">14sp</dimen>
<dimen name="resolver_title_padding_bottom">0dp</dimen>
<dimen name="resolver_empty_state_container_padding_top">8dp</dimen>
<dimen name="resolver_empty_state_container_padding_bottom">8dp</dimen>
<dimen name="chooser_action_button_icon_size">18dp</dimen>

View File

@@ -3961,6 +3961,7 @@
<java-symbol type="id" name="resolver_button_bar_divider" />
<java-symbol type="id" name="resolver_empty_state_container" />
<java-symbol type="id" name="button_bar_container" />
<java-symbol type="id" name="title_container" />
<java-symbol type="string" name="resolver_cant_share_with_work_apps" />
<java-symbol type="string" name="resolver_cant_share_with_work_apps_explanation" />
<java-symbol type="string" name="resolver_cant_share_with_personal_apps" />
@@ -3984,6 +3985,9 @@
<java-symbol type="dimen" name="resolver_max_collapsed_height_with_default_with_tabs" />
<java-symbol type="bool" name="resolver_landscape_phone" />
<java-symbol type="dimen" name="resolver_tab_text_size" />
<java-symbol type="dimen" name="resolver_title_padding_bottom" />
<java-symbol type="dimen" name="resolver_empty_state_container_padding_top" />
<java-symbol type="dimen" name="resolver_empty_state_container_padding_bottom" />
<!-- Toast message for background started foreground service while-in-use permission restriction feature -->
<java-symbol type="string" name="allow_while_in_use_permission_in_fgs" />