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

Commit 69f49434 authored by Daniel Sandler's avatar Daniel Sandler Committed by Android (Google) Code Review
Browse files

Merge "Limit transient nav cling to 380dp on large/land devices." into klp-dev

parents 00f597bc b83f5c6a
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -61,4 +61,6 @@
    Landscape's layout allows this to be smaller than for portrait. -->
    <dimen name="kg_squashed_layout_threshold">400dp</dimen>

    <!-- width of TransientNavigationConfirmation (-1 for match_parent) -->
    <dimen name="immersive_mode_cling_width">380dp</dimen>
</resources>
+2 −0
Original line number Diff line number Diff line
@@ -113,4 +113,6 @@
    <!-- Margin around the various security views -->
    <dimen name="keyguard_muliuser_selector_margin">12dp</dimen>

    <!-- width of TransientNavigationConfirmation (-1 for match_parent) -->
    <dimen name="immersive_mode_cling_width">380dp</dimen>
</resources>
+2 −0
Original line number Diff line number Diff line
@@ -356,4 +356,6 @@
    <!-- Outline width for video subtitles. -->
    <dimen name="subtitle_outline_width">2dp</dimen>

    <!-- width of TransientNavigationConfirmation (-1 for match_parent) -->
    <dimen name="immersive_mode_cling_width">-1px</dimen>
</resources>
+1 −0
Original line number Diff line number Diff line
@@ -346,6 +346,7 @@
  <java-symbol type="dimen" name="notification_text_size" />
  <java-symbol type="dimen" name="notification_title_text_size" />
  <java-symbol type="dimen" name="notification_subtext_size" />
  <java-symbol type="dimen" name="immersive_mode_cling_width" />

  <java-symbol type="string" name="add_account_button_label" />
  <java-symbol type="string" name="addToDictionary" />
+52 −21
Original line number Diff line number Diff line
@@ -16,11 +16,13 @@

package com.android.internal.policy.impl;

import android.animation.Animator;
import android.animation.ArgbEvaluator;
import android.animation.ValueAnimator;
import android.app.ActivityManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.PixelFormat;
import android.graphics.drawable.ColorDrawable;
import android.os.Handler;
@@ -166,6 +168,31 @@ public class TransientNavigationConfirmation {
        }
    }

    public WindowManager.LayoutParams getClingWindowLayoutParams() {
        final WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.MATCH_PARENT,
                WindowManager.LayoutParams.TYPE_TOAST,
                0
                        | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
                        | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                        | WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED
                ,
                PixelFormat.TRANSLUCENT);
        lp.setTitle("TransientNavigationConfirmation");
        lp.windowAnimations = com.android.internal.R.style.Animation_RecentApplications;
        lp.gravity = Gravity.FILL;
        return lp;
    }

    public FrameLayout.LayoutParams getBubbleLayoutParams() {
        return new FrameLayout.LayoutParams(
                mContext.getResources().getDimensionPixelSize(
                        R.dimen.immersive_mode_cling_width),
                ViewGroup.LayoutParams.WRAP_CONTENT,
                Gravity.CENTER_HORIZONTAL | Gravity.TOP);
    }

    private class ClingWindowView extends FrameLayout {
        private static final int BGCOLOR = 0x80000000;
        private static final int OFFSET_DP = 48;
@@ -173,6 +200,18 @@ public class TransientNavigationConfirmation {
        private final Runnable mConfirm;
        private final ColorDrawable mColor = new ColorDrawable(0);
        private ValueAnimator mColorAnim;
        private ViewGroup mClingLayout;

        private BroadcastReceiver mReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                if (intent.getAction().equals(Intent.ACTION_CONFIGURATION_CHANGED)) {
                    if (mClingLayout != null && mClingLayout.getParent() != null) {
                        mClingLayout.setLayoutParams(getBubbleLayoutParams());
                    }
                }
            }
        };

        public ClingWindowView(Context context, Runnable confirm) {
            super(context);
@@ -190,23 +229,20 @@ public class TransientNavigationConfirmation {
            float density = metrics.density;

            // create the confirmation cling
            final ViewGroup clingLayout = (ViewGroup)
            mClingLayout = (ViewGroup)
                    View.inflate(getContext(), R.layout.transient_navigation_cling, null);

            final Button ok = (Button) clingLayout.findViewById(R.id.ok);
            final Button ok = (Button) mClingLayout.findViewById(R.id.ok);
            ok.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    mConfirm.run();
                }
            });
            addView(clingLayout, new FrameLayout.LayoutParams(
                    FrameLayout.LayoutParams.MATCH_PARENT,
                    FrameLayout.LayoutParams.WRAP_CONTENT
            ));
            addView(mClingLayout, getBubbleLayoutParams());

            if (ActivityManager.isHighEndGfx()) {
                final View bubble = clingLayout.findViewById(R.id.text);
                final View bubble = mClingLayout.findViewById(R.id.text);
                bubble.setAlpha(0f);
                bubble.setTranslationY(-OFFSET_DP*density);
                bubble.animate()
@@ -238,6 +274,13 @@ public class TransientNavigationConfirmation {
            } else {
                mColor.setColor(BGCOLOR);
            }

            mContext.registerReceiver(mReceiver, new IntentFilter(Intent.ACTION_CONFIGURATION_CHANGED));
        }

        @Override
        public void onDetachedFromWindow() {
            mContext.unregisterReceiver(mReceiver);
        }

        @Override
@@ -259,19 +302,7 @@ public class TransientNavigationConfirmation {
              | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);

        // show the confirmation
        WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.MATCH_PARENT,
                WindowManager.LayoutParams.TYPE_TOAST,
                0
                        | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
                        | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                        | WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED
                ,
                PixelFormat.TRANSLUCENT);
        lp.setTitle("TransientNavigationConfirmation");
        lp.windowAnimations = com.android.internal.R.style.Animation_RecentApplications;
        lp.gravity = Gravity.FILL;
        WindowManager.LayoutParams lp = getClingWindowLayoutParams();
        mWindowManager.addView(mClingWindow, lp);
    }