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

Commit dce0b5fe authored by Winson Chung's avatar Winson Chung
Browse files

Fixing small issues with drag-to-dismiss window.

- Ensure that it fills the height under the nav bar
- Prevent flash by removing window immediately

Test: Enable drag-to-dismiss and drag the PiP
Change-Id: I60036263321ff99be24a0762eb2e622faa609786
parent 0c4f715a
Loading
Loading
Loading
Loading
+22 −13
Original line number Diff line number Diff line
@@ -25,11 +25,14 @@ import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnLayoutChangeListener;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import android.widget.FrameLayout;

import com.android.systemui.Interpolators;
import com.android.systemui.R;
import com.android.systemui.recents.misc.SystemServicesProxy;

public class PipDismissViewController {

@@ -65,8 +68,10 @@ public class PipDismissViewController {
    public void createDismissTarget() {
        if (mDismissView == null) {
            // Determine sizes for the gradient
            Point windowSize = new Point();
            mWindowManager.getDefaultDisplay().getSize(windowSize);
            final Rect stableInsets = new Rect();
            SystemServicesProxy.getInstance(mContext).getStableInsets(stableInsets);
            final Point windowSize = new Point();
            mWindowManager.getDefaultDisplay().getRealSize(windowSize);
            mMinHeight = windowSize.y * DISMISS_GRADIENT_MIN_HEIGHT_PERCENT;
            mMaxHeight = windowSize.y * DISMISS_GRADIENT_MAX_HEIGHT_PERCENT;

@@ -74,13 +79,16 @@ public class PipDismissViewController {
            LayoutInflater inflater = LayoutInflater.from(mContext);
            mDismissView = inflater.inflate(R.layout.pip_dismiss_view, null);
            mGradientView = mDismissView.findViewById(R.id.gradient_view);
            FrameLayout.LayoutParams glp = (android.widget.FrameLayout.LayoutParams) mGradientView
                    .getLayoutParams();
            FrameLayout.LayoutParams glp =
                    (FrameLayout.LayoutParams) mGradientView.getLayoutParams();
            glp.height = (int) mMaxHeight;
            mGradientView.setLayoutParams(glp);
            mGradientView.setPivotY(windowSize.y);
            mGradientView.setScaleY(mMaxHeight / mMinHeight); // Set to min height via scaling
            mDismissContainer = mDismissView.findViewById(R.id.pip_dismiss_container);
            FrameLayout.LayoutParams clp =
                    (FrameLayout.LayoutParams) mDismissContainer.getLayoutParams();
            clp.bottomMargin = stableInsets.bottom;
            mDismissContainer.addOnLayoutChangeListener(new OnLayoutChangeListener() {
                @Override
                public void onLayoutChange(View v, int left, int top, int right, int bottom,
@@ -92,15 +100,16 @@ public class PipDismissViewController {
            });

            // Add the target to the window
            WindowManager.LayoutParams lp =  new WindowManager.LayoutParams(
                    windowSize.x,
                    (int) mMaxHeight,
                    WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG,
                    WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
                            | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
                            | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
            LayoutParams lp =  new LayoutParams(
                    ViewGroup.LayoutParams.MATCH_PARENT, (int) mMaxHeight,
                    0, windowSize.y - (int) mMaxHeight,
                    LayoutParams.TYPE_SYSTEM_DIALOG,
                    LayoutParams.FLAG_LAYOUT_IN_SCREEN
                            | LayoutParams.FLAG_LAYOUT_NO_LIMITS
                            | LayoutParams.FLAG_NOT_TOUCHABLE
                            | LayoutParams.FLAG_NOT_FOCUSABLE,
                    PixelFormat.TRANSLUCENT);
            lp.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL;
            lp.gravity = Gravity.TOP | Gravity.CENTER_HORIZONTAL;
            mWindowManager.addView(mDismissView, lp);
        }
        mDismissView.animate().cancel();
@@ -132,7 +141,7 @@ public class PipDismissViewController {
                    .withEndAction(new Runnable() {
                        @Override
                        public void run() {
                            mWindowManager.removeView(mDismissView);
                            mWindowManager.removeViewImmediate(mDismissView);
                            mDismissView = null;
                        }
                    })