summaryrefslogtreecommitdiff
path: root/quickstep/src/com/android/quickstep/views/TaskViewIcon.java
blob: 4e82725d9809411ea819f01cc0146876eac3c30c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/*
 * Copyright (C) 2023 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.quickstep.views;

import android.annotation.Nullable;
import android.graphics.drawable.Drawable;
import android.view.View;
import android.view.ViewGroup;

import com.android.quickstep.util.RecentsOrientedState;

/**
 * Interface defining an object which can be used as a TaskView's icon.
 */
public interface TaskViewIcon {

    /**
     * Returns the width of this icon view.
     */
    int getWidth();

    /**
     * Returns the height of this icon view.
     */
    int getHeight();

    /**
     * Sets the opacity of the view.
     */
    void setContentAlpha(float alpha);

    /**
     * Returns this icon view's drawable.
     */
    @Nullable Drawable getDrawable();

    /**
     * Sets a {@link Drawable} to be displayed.
     */
    void setDrawable(@Nullable Drawable icon);

    /**
     * Register a callback to be invoked when this view is clicked.
     */
    void setOnClickListener(@Nullable View.OnClickListener l);

    /**
     * Register a callback to be invoked when this view is clicked and held.
     */
    void setOnLongClickListener(@Nullable View.OnLongClickListener l);

    /**
     * Returns the LayoutParams associated with this view.
     */
    ViewGroup.LayoutParams getLayoutParams();

    /**
     * Sets the layout parameters associated with this view.
     */
    void setLayoutParams(ViewGroup.LayoutParams params);

    /**
     * Sets the degrees that the view is rotated around the pivot point.
     */
    void setRotation(float rotation);

    /**
     * Sets the size of the icon drawable.
     */
    void setDrawableSize(int iconWidth, int iconHeight);

    /**
     * Sets the orientation of this icon view based on the provided orientationState.
     */
    void setIconOrientation(RecentsOrientedState orientationState, boolean isGridTask);

    /**
     * Sets the visibility state of this view.
     */
    void setVisibility(int visibility);

    /**
     * Sets the tint color of the icon, useful for scrimming or dimming.
     *
     * @param color to blend in.
     * @param amount [0,1] 0 no tint, 1 full tint
     */
    void setIconColorTint(int color, float amount);

    /**
     * Gets the opacity of the view.
     */
    float getAlpha();

    /**
     * Returns the width of this icon view's drawable.
     */
    int getDrawableWidth();

    /**
     * Returns the height of this icon view's drawable.
     */
    int getDrawableHeight();

    /**
     * Directly calls any attached OnClickListener.
     */
    boolean callOnClick();

    /**
     * Calls this view's OnLongClickListener.
     */
    boolean performLongClick();

    /**
     * Sets the text for this icon view if any text view is associated.
     */
    default void setText(CharSequence text) {}

    /**
     * Returns this icon view cast as a View.
     */
    View asView();
}