From 5dea00c4e77a3a9ecda7147d4d49816e3d7c856f Mon Sep 17 00:00:00 2001 From: josephpv Date: Tue, 14 Nov 2023 19:14:03 +0000 Subject: [PATCH] Add fade out/fade in animation in PS setup auto advancing screen As per the UX requirement below changes are made in the screen: - Position of "Setting up Pirvate Space" text is left aligned to layout - Lading progress bar next to text removed - Add fade out and fade in animation for header and image in auto advance screen Bug: 310218201 Test: Manual Change-Id: Iaf9c27761ce7f25368aac8f9a7d43eba20d66353 --- res/layout/privatespace_advancing_screen.xml | 25 +++--------- res/values/strings.xml | 4 +- .../AutoAdvanceSetupFragment.java | 39 +++++++++++++++++-- 3 files changed, 44 insertions(+), 24 deletions(-) diff --git a/res/layout/privatespace_advancing_screen.xml b/res/layout/privatespace_advancing_screen.xml index cebb6fa1b63..5b695932f0d 100644 --- a/res/layout/privatespace_advancing_screen.xml +++ b/res/layout/privatespace_advancing_screen.xml @@ -20,7 +20,6 @@ android:id="@+id/privatesapce_autoadvance_screen" android:layout_width="match_parent" android:layout_height="match_parent" - app:sucHeaderText="@string/privatespace_lock_protected_title" android:icon="@drawable/ic_privatespace_icon"> - - - - + android:textSize="14sp" + android:text="@string/privatespace_setting_up_text" + android:layout_marginBottom="24dp"/> diff --git a/res/values/strings.xml b/res/values/strings.xml index 36e8a1c1a51..e0536ef2916 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1270,12 +1270,12 @@ Private Space apps won\u2019t appear in permission manager, privacy dashboard, and other settings when Private Space is locked Setting up Private Space\u2026 - - Private Space is protected by a lock Usage info for Private Space apps is hidden when it\u2019s locked Access Private Space from your apps list + + Some system apps are already installed in Private Space Couldn\u2019t set up Private Space diff --git a/src/com/android/settings/privatespace/AutoAdvanceSetupFragment.java b/src/com/android/settings/privatespace/AutoAdvanceSetupFragment.java index 3b59166c238..1061498d1f9 100644 --- a/src/com/android/settings/privatespace/AutoAdvanceSetupFragment.java +++ b/src/com/android/settings/privatespace/AutoAdvanceSetupFragment.java @@ -19,6 +19,11 @@ package com.android.settings.privatespace; import static com.android.settings.privatespace.PrivateSpaceSetupActivity.ACCOUNT_LOGIN_ACTION; import static com.android.settings.privatespace.PrivateSpaceSetupActivity.EXTRA_ACTION_TYPE; +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.AnimatorSet; +import android.animation.ObjectAnimator; +import android.animation.ValueAnimator; import android.annotation.SuppressLint; import android.content.Intent; import android.os.Bundle; @@ -51,16 +56,17 @@ public class AutoAdvanceSetupFragment extends Fragment { private static final String TAG = "AutoAdvanceFragment"; private static final String TITLE_INDEX = "title_index"; private static final int DELAY_BETWEEN_SCREENS = 5000; // 5 seconds in millis + private static final int ANIMATION_DURATION_MILLIS = 500; private GlifLayout mRootView; private Handler mHandler; private int mScreenTitleIndex; private static final List> HEADER_IMAGE_PAIRS = ImmutableList.of( - new Pair(R.string.privatespace_lock_protected_title, - R.drawable.privatespace_setup_flow_placeholder), new Pair(R.string.privatespace_apps_hidden_title, R.drawable.privatespace_setup_flow_placeholder), new Pair(R.string.privatespace_access_from_apps_title, + R.drawable.privatespace_setup_flow_placeholder), + new Pair(R.string.privatespace_system_apps_installed_title, R.drawable.privatespace_setup_flow_placeholder)); private Runnable mUpdateScreenResources = @@ -69,7 +75,7 @@ public class AutoAdvanceSetupFragment extends Fragment { public void run() { if (getActivity() != null) { if (++mScreenTitleIndex < HEADER_IMAGE_PAIRS.size()) { - updateHeaderAndImage(); + startFadeOutAnimation(); mHandler.postDelayed(mUpdateScreenResources, DELAY_BETWEEN_SCREENS); } else { PrivateSpaceMaintainer privateSpaceMaintainer = PrivateSpaceMaintainer @@ -148,5 +154,32 @@ public class AutoAdvanceSetupFragment extends Fragment { mRootView.setHeaderText(HEADER_IMAGE_PAIRS.get(mScreenTitleIndex).first); ((ImageView) mRootView.findViewById(R.id.placeholder_image)) .setImageResource(HEADER_IMAGE_PAIRS.get(mScreenTitleIndex).second); + startFadeInAnimation(); + } + + private void startFadeInAnimation() { + ValueAnimator textView = ObjectAnimator.ofFloat( + mRootView.getHeaderTextView(), View.ALPHA, 0f, 1f); + ValueAnimator imageView = ObjectAnimator.ofFloat( + mRootView.findViewById(R.id.placeholder_image), View.ALPHA, 0, 1f); + AnimatorSet fadeIn = new AnimatorSet(); + fadeIn.playTogether(textView, imageView); + fadeIn.setDuration(ANIMATION_DURATION_MILLIS).start(); + } + + private void startFadeOutAnimation() { + AnimatorSet fadeOut = new AnimatorSet(); + ValueAnimator textView = ObjectAnimator.ofFloat( + mRootView.getHeaderTextView(), View.ALPHA, 1f, 0f); + ValueAnimator imageView = ObjectAnimator.ofFloat( + mRootView.findViewById(R.id.placeholder_image), View.ALPHA, 1f, 0f); + fadeOut.playTogether(textView, imageView); + fadeOut.setDuration(ANIMATION_DURATION_MILLIS).start(); + fadeOut.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + updateHeaderAndImage(); + } + }); } }