Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cdd65302 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix in the scrollable Glif header design, the sub-title can not be read...

Merge "Fix in the scrollable Glif header design, the sub-title can not be read out automatically in the Udfps enrolling page" into main
parents fdd29cdc bafd2cf5
Loading
Loading
Loading
Loading
+25 −1
Original line number Diff line number Diff line
@@ -270,7 +270,8 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
                                R.integer.config_biometrics_header_scroll_duration);
                        layoutView.adjustScrollableHeaderHeight(
                                headerScrollView, mShouldShowLottie);
                        layoutView.headerVerticalScrolling(headerScrollView, headerScrollDuration);
                        layoutView.headerVerticalScrolling(headerScrollView, headerScrollDuration,
                                mIsAccessibilityEnabled);
                    }
                }
            }
@@ -547,6 +548,9 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
    }

    private void updateTitleAndDescriptionForUdfps() {
        final UdfpsEnrollEnrollingView layoutView = (UdfpsEnrollEnrollingView) getLayout();
        final boolean shouldSetFocusOnDescription = Flags.enrollLayoutTruncateImprovement()
                && mIsAccessibilityEnabled;
        switch (getCurrentStage()) {
            case STAGE_CENTER:
                setHeaderText(R.string.security_settings_fingerprint_enroll_repeat_title);
@@ -560,6 +564,10 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
                    );
                    configureEnrollmentStage(R.raw.udfps_center_hint_lottie);
                }

                if (shouldSetFocusOnDescription) {
                    layoutView.setFocusOnDescription();
                }
                break;

            case STAGE_GUIDED:
@@ -574,6 +582,10 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
                    // TODO(b/228100413) Could customize guided lottie animation
                    configureEnrollmentStage(R.raw.udfps_center_hint_lottie);
                }

                if (shouldSetFocusOnDescription) {
                    layoutView.setFocusOnDescription();
                }
                break;
            case STAGE_FINGERTIP:
                setHeaderText(R.string.security_settings_udfps_enroll_fingertip_title);
@@ -584,6 +596,10 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
                    );
                    configureEnrollmentStage(R.raw.udfps_tip_hint_lottie);
                }

                if (shouldSetFocusOnDescription) {
                    layoutView.setFocusOnDescription();
                }
                break;
            case STAGE_LEFT_EDGE:
                setHeaderText(R.string.security_settings_udfps_enroll_left_edge_title);
@@ -601,6 +617,10 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
                        setDescriptionText(R.string.security_settings_udfps_enroll_edge_message);
                    }
                }

                if (shouldSetFocusOnDescription) {
                    layoutView.setFocusOnDescription();
                }
                break;
            case STAGE_RIGHT_EDGE:
                setHeaderText(R.string.security_settings_udfps_enroll_right_edge_title);
@@ -619,6 +639,10 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
                        setDescriptionText(R.string.security_settings_udfps_enroll_edge_message);
                    }
                }

                if (shouldSetFocusOnDescription) {
                    layoutView.setFocusOnDescription();
                }
                break;

            case STAGE_UNKNOWN:
+52 −8
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.graphics.Insets;
import android.graphics.Point;
import android.graphics.Rect;
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
import android.os.Handler;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
@@ -44,6 +45,7 @@ import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;

import androidx.annotation.ColorInt;
import androidx.annotation.LayoutRes;
@@ -200,7 +202,26 @@ public class UdfpsEnrollEnrollingView extends GlifLayout {
        return footerBarMinHeight;
    }

    void headerVerticalScrolling(ScrollView headerScrollView, long duration) {
    void setFocusOnDescription() {
        final ScrollView headerScrollView = findViewById(R.id.sud_header_scroll_view);
        final TextView descriptionView = getDescriptionTextView();
        if (descriptionView != null && !descriptionView.getText().isEmpty()) {
            descriptionView.post(
                    () -> {
                    Rect scrollBounds = new Rect();
                    headerScrollView.getHitRect(scrollBounds);
                    boolean isVisible = descriptionView.getLocalVisibleRect(scrollBounds);
                    if (!isVisible) {
                        descriptionView.setFocusable(true);
                        descriptionView.setFocusableInTouchMode(true);
                        descriptionView.requestFocus();
                    }
                });
        }
    }

    void headerVerticalScrolling(ScrollView headerScrollView, long duration,
            boolean isAccessibilityEnabled) {
        headerScrollView.post(new Runnable() {
            @Override
            public void run() {
@@ -216,11 +237,21 @@ public class UdfpsEnrollEnrollingView extends GlifLayout {

                    @Override
                    public void onAnimationEnd(@NonNull Animator animation) {
                        mHeaderScrollAnimator.removeAllListeners();
                            headerScrollView.post(new Runnable() {
                                @Override
                                public void run() {
                                    mHeaderScrollAnimator.removeAllListeners();
                                    mHeaderScrollAnimator.reverse();
                                    if (isAccessibilityEnabled) {
                                        new Handler().postDelayed(new Runnable() {
                                            @Override
                                            public void run() {
                                                if (!mHeaderScrollAnimator.isRunning()) {
                                                    setFocusOnDescription();
                                                }
                                            }
                                        }, duration + 200);
                                    }
                                }
                            });
                    }
@@ -320,6 +351,19 @@ public class UdfpsEnrollEnrollingView extends GlifLayout {
                R.id.udfps_enroll_animation_fp_view);
        fingerprintView.setPadding(0, -layoutLottieAnimationPadding,
                0, layoutLottieAnimationPadding);

        // TODO(b/260970216) Instead of hiding the description text view, we should
        //  make the header view scrollable if the text is too long.
        // If description text view has overlap with udfps progress view, hide it.
        if (!Flags.enrollLayoutTruncateImprovement()) {
            final View descView = getDescriptionTextView();
            getViewTreeObserver().addOnDrawListener(() -> {
                if (descView.getVisibility() == View.VISIBLE
                        && hasOverlap(descView, mUdfpsEnrollView)) {
                    descView.setVisibility(View.GONE);
                }
            });
        }
    }

    private void setOnHoverListener() {