Files
Flexera-Launcher/src/com/android/launcher3/dragndrop/DraggableView.java
T
Samuel Fufa 167210a323 Keep Predicted icon same size when dragging
-> In addition, this also prevents the drawing of ring effect for predicted icon when view is about to be copied to drag bitmap. Icon will scale to full size (without ring) when dropped.

Video attached to bug report

Bug: 152325754
Test: Manual
Change-Id: Ibd1a5dbf76c41bdc30ae851ad914a4d0e32703c8
2020-05-13 11:22:27 -07:00

74 lines
2.3 KiB
Java

/*
* Copyright (C) 2020 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.dragndrop;
import android.graphics.Rect;
import androidx.annotation.NonNull;
import com.android.launcher3.util.SafeCloseable;
/**
* Interface defining methods required for drawing and previewing DragViews, drag previews, and
* related animations
*/
public interface DraggableView {
int DRAGGABLE_ICON = 0;
int DRAGGABLE_WIDGET = 1;
/**
* Static ctr for a simple instance which just returns the view type.
*/
static DraggableView ofType(int type) {
return () -> type;
}
/**
* Certain handling of DragViews depend only on whether this is an Icon Type item or a Widget
* Type item.
*
* @return DRAGGABLE_ICON or DRAGGABLE_WIDGET as appropriate
*/
int getViewType();
/**
* Before rendering as a DragView bitmap, some views need a preparation step. Returns a
* callback to clear any preparation work
*/
@NonNull default SafeCloseable prepareDrawDragView() {
return () -> { };
}
/**
* If an actual View subclass, this method returns the rectangle (within the View's coordinates)
* of the visual region that should get dragged. This is used to extract exactly that element
* as well as to offset that element as appropriate for various animations
*
* @param bounds Visual bounds in the views coordinates will be written here.
*/
default void getWorkspaceVisualDragBounds(Rect bounds) { }
/**
* Same as above, but accounts for differing icon sizes between source and destination
*
* @param bounds Visual bounds in the views coordinates will be written here.
*/
default void getSourceVisualDragBounds(Rect bounds) {
getWorkspaceVisualDragBounds(bounds);
}
}