blob: 0bfbc6e9fe213b8f449b03a320f57603e3baeec7 [file] [log] [blame]
Alex Chau3c0729c2024-03-22 14:23:50 +00001/*
2 * Copyright (C) 2024 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.launcher3
18
19import com.android.launcher3.AbstractFloatingView.FloatingViewType
20import com.android.launcher3.views.ActivityContext
21
22/**
23 * Helper class for manaing AbstractFloatingViews which shows a floating UI on top of the launcher
24 * UI.
25 */
26class AbstractFloatingViewHelper {
27 fun closeOpenViews(activity: ActivityContext, animate: Boolean, @FloatingViewType type: Int) {
28 val dragLayer = activity.getDragLayer()
29 // Iterate in reverse order. AbstractFloatingView is added later to the dragLayer,
30 // and will be one of the last views.
31 for (i in dragLayer.getChildCount() - 1 downTo 0) {
32 val child = dragLayer.getChildAt(i)
33 if (child is AbstractFloatingView && child.isOfType(type)) {
34 child.close(animate)
35 }
36 }
37 }
38}