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

Commit 1d3ddb87 authored by Brandon Dayauon's avatar Brandon Dayauon
Browse files

Add floatingMaskView when animating to mimic bottom container.

- On expand, we add the floating mask view and translate it out at the end.
- On collapse, we translate off the mask view in the beginning once the floating mask view is added
so that we can translate it in before the actual collapsing part of the animation

bug:339850589
Test manually:
https://drive.google.com/file/d/1YNc3vq9Cb5BcbcPOHp8H3lhe6KmYBdLI/view?usp=sharing
Flag:ACONFIG com.android.launcher3.private_space_floating_mask_view STAGING

Change-Id: I7c303e6629d83408bd314886fe10113246e44dcb
parent 892b96f3
Loading
Loading
Loading
Loading
+30 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
  ~ Copyright (C) 2024 The Android Open Source Project
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~      http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <vector
            android:viewportWidth="28"
            android:viewportHeight="28"
            android:width="@dimen/ps_floating_mask_corner_radius"
            android:height="@dimen/ps_floating_mask_corner_radius">
            <path
                android:pathData="M0 28H28C24.3228 28 20.6821 27.2759 17.2847 25.8687C13.8877 24.4614 10.8013 22.3989 8.20117 19.7988C5.60107 17.1987 3.53857 14.1123 2.13135 10.7153C0.724121 7.31787 0 3.67725 0 0V28Z"
                android:fillType="evenOdd"
                android:fillColor="?attr/allAppsScrimColor" />
        </vector>
    </item>
</layer-list>
 No newline at end of file
+30 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?><!--
  ~ Copyright (C) 2024 The Android Open Source Project
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~      http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <vector
            android:viewportWidth="28"
            android:viewportHeight="28"
            android:width="@dimen/ps_floating_mask_corner_radius"
            android:height="@dimen/ps_floating_mask_corner_radius">
            <path
                android:pathData="M28 28V0C28 3.67725 27.2759 7.31787 25.8687 10.7153C24.4614 14.1123 22.3989 17.1987 19.7988 19.7988C17.1987 22.3989 14.1123 24.4614 10.7153 25.8687C7.31787 27.2759 3.67725 28 0 28H28Z"
                android:fillType="evenOdd"
                android:fillColor="?attr/allAppsScrimColor" />
        </vector>
    </item>
</layer-list>
 No newline at end of file
+55 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?><!--
  ~ Copyright (C) 2024 The Android Open Source Project
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~      http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<com.android.launcher3.allapps.FloatingMaskView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_marginLeft="@dimen/ps_floating_mask_end_padding"
    android:layout_marginRight="@dimen/ps_floating_mask_end_padding"
    android:importantForAccessibility="noHideDescendants"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/left_corner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintStart_toStartOf="parent"
        android:importantForAccessibility="no"
        android:background="@drawable/bg_ps_mask_left_corner"/>

    <ImageView
        android:id="@+id/right_corner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleType="centerCrop"
        app:layout_constraintEnd_toEndOf="parent"
        android:importantForAccessibility="no"
        android:background="@drawable/bg_ps_mask_right_corner"/>

    <ImageView
        android:id="@+id/bottom_box"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintStart_toStartOf="@id/left_corner"
        app:layout_constraintEnd_toEndOf="@id/right_corner"
        app:layout_constraintTop_toBottomOf="@id/left_corner"
        android:importantForAccessibility="no"
        android:background="?attr/allAppsScrimColor"/>

</com.android.launcher3.allapps.FloatingMaskView>
 No newline at end of file
+2 −0
Original line number Diff line number Diff line
@@ -536,6 +536,8 @@
    <dimen name="ps_lock_icon_text_margin_start_expanded">8dp</dimen>
    <dimen name="ps_lock_icon_text_margin_end_expanded">6dp</dimen>
    <dimen name="ps_lock_button_background_padding">10dp</dimen>
    <dimen name="ps_floating_mask_corner_radius">28dp</dimen>
    <dimen name="ps_floating_mask_end_padding">16dp</dimen>

    <!-- WindowManagerProxy -->
    <dimen name="max_width_and_height_of_small_display_cutout">136px</dimen>
+65 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.launcher3.allapps;

import android.content.Context;
import android.util.AttributeSet;
import android.view.ViewGroup;
import android.widget.ImageView;

import androidx.constraintlayout.widget.ConstraintLayout;

import com.android.launcher3.R;
import com.android.launcher3.views.ActivityContext;

public class FloatingMaskView extends ConstraintLayout {

    private final ActivityContext mActivityContext;
    private ImageView mBottomBox;

    public FloatingMaskView(Context context) {
        this(context, null, 0);
    }

    public FloatingMaskView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public FloatingMaskView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        mActivityContext = ActivityContext.lookupContext(context);
    }

    @Override
    protected void onFinishInflate() {
        super.onFinishInflate();
        mBottomBox = findViewById(R.id.bottom_box);
    }

    @Override
    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
        super.onLayout(changed, left, top, right, bottom);
        ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) getLayoutParams();
        AllAppsRecyclerView allAppsContainerView =
                mActivityContext.getAppsView().getActiveRecyclerView();
        if (lp != null) {
            lp.rightMargin = allAppsContainerView.getPaddingRight();
            lp.leftMargin = allAppsContainerView.getPaddingLeft();
            mBottomBox.setMinimumHeight(allAppsContainerView.getPaddingBottom());
        }
    }
}
Loading