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

Commit 8c0c1e5d authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Replaces Toast with a custom minimal snackbar-like TextView."

parents 27632350 498991b2
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -50,6 +50,17 @@

  </LinearLayout>

  <TextView
      android:id="@+id/snackbar"
      android:visibility="gone"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:paddingStart="16dp"
      android:gravity="center_vertical"
      android:textColor="@color/colorControlNormal"
      android:textSize="@dimen/label_text_size"
      android:background="@color/snackbar_bg_color"/>

  <View
      android:id="@+id/bottom_listDivider"
      android:layout_width="match_parent"
+1 −0
Original line number Diff line number Diff line
@@ -19,5 +19,6 @@
  <color name="footer_icon_enabled_color">#E8EAED</color>
  <color name="footer_icon_disabled_color">#5F6368</color>
  <color name="colorControlNormal">#202124</color>
  <color name="snackbar_bg_color">@android:color/white</color>

</resources>
+1 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@
  <color name="footer_icon_enabled_color">@android:color/black</color>
  <color name="footer_icon_disabled_color">#ddd</color>
  <color name="colorControlNormal">@android:color/white</color>
  <color name="snackbar_bg_color">#313235</color>

  <color name="colorAccessibilityMenuIcon">#3AA757</color>
</resources>
+37 −5
Original line number Diff line number Diff line
@@ -18,10 +18,14 @@ package com.android.systemui.accessibility.accessibilitymenu.view;

import static java.lang.Math.max;

import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.content.res.Configuration;
import android.graphics.Insets;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.os.Handler;
import android.os.Looper;
import android.view.Display;
import android.view.Gravity;
import android.view.LayoutInflater;
@@ -31,8 +35,11 @@ import android.view.ViewGroup;
import android.view.WindowInsets;
import android.view.WindowManager;
import android.view.WindowMetrics;
import android.view.accessibility.AccessibilityManager;
import android.widget.FrameLayout;
import android.widget.Toast;
import android.widget.TextView;

import androidx.annotation.NonNull;

import com.android.systemui.accessibility.accessibilitymenu.AccessibilityMenuService;
import com.android.systemui.accessibility.accessibilitymenu.R;
@@ -69,11 +76,15 @@ public class A11yMenuOverlayLayout {
    private ViewGroup mLayout;
    private WindowManager.LayoutParams mLayoutParameter;
    private A11yMenuViewPager mA11yMenuViewPager;
    private Handler mHandler;
    private AccessibilityManager mAccessibilityManager;

    public A11yMenuOverlayLayout(AccessibilityMenuService service) {
        mService = service;
        mWindowManager = mService.getSystemService(WindowManager.class);
        configureLayout();
        mHandler = new Handler(Looper.getMainLooper());
        mAccessibilityManager = mService.getSystemService(AccessibilityManager.class);
    }

    /** Creates Accessibility menu layout and configure layout parameters. */
@@ -261,9 +272,30 @@ public class A11yMenuOverlayLayout {
        mLayout.setVisibility((mLayout.getVisibility() == View.VISIBLE) ? View.GONE : View.VISIBLE);
    }

    /** Shows hint text on Toast. */
    public void showToast(String text) {
        final View viewPos = mLayout.findViewById(R.id.coordinatorLayout);
        Toast.makeText(viewPos.getContext(), text, Toast.LENGTH_SHORT).show();
    /** Shows hint text on a minimal Snackbar-like text view. */
    public void showSnackbar(String text) {
        final int animationDurationMs = 300;
        final int timeoutDurationMs = mAccessibilityManager.getRecommendedTimeoutMillis(2000,
                AccessibilityManager.FLAG_CONTENT_TEXT);

        final TextView snackbar = mLayout.findViewById(R.id.snackbar);
        snackbar.setText(text);

        // Remove any existing fade-out animation before starting any new animations.
        mHandler.removeCallbacksAndMessages(null);

        if (snackbar.getVisibility() != View.VISIBLE) {
            snackbar.setAlpha(0f);
            snackbar.setVisibility(View.VISIBLE);
            snackbar.animate().alpha(1f).setDuration(animationDurationMs).setListener(null);
        }
        mHandler.postDelayed(() -> snackbar.animate().alpha(0f).setDuration(
                animationDurationMs).setListener(
                new AnimatorListenerAdapter() {
                        @Override
                        public void onAnimationEnd(@NonNull Animator animation) {
                            snackbar.setVisibility(View.GONE);
                        }
                    }), timeoutDurationMs);
    }
}