Merge "Scale down thumbnail with app surface" into ub-launcher3-qt-dev
This commit is contained in:
commit
d2e40927a7
|
@ -18,7 +18,8 @@
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="@dimen/task_item_height"
|
android:layout_height="@dimen/task_item_height"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal"
|
||||||
|
android:clipChildren="false">
|
||||||
<com.android.quickstep.views.TaskThumbnailIconView
|
<com.android.quickstep.views.TaskThumbnailIconView
|
||||||
android:id="@+id/task_icon_and_thumbnail"
|
android:id="@+id/task_icon_and_thumbnail"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
|
@ -38,6 +38,7 @@ import android.content.Context;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.graphics.Matrix;
|
import android.graphics.Matrix;
|
||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
|
import android.graphics.RectF;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.util.ArraySet;
|
import android.util.ArraySet;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
|
@ -768,6 +769,7 @@ public final class IconRecentsView extends FrameLayout implements Insettable {
|
||||||
Rect endRect = new Rect();
|
Rect endRect = new Rect();
|
||||||
thumbnailView.getGlobalVisibleRect(endRect);
|
thumbnailView.getGlobalVisibleRect(endRect);
|
||||||
Rect appBounds = appTarget.sourceContainerBounds;
|
Rect appBounds = appTarget.sourceContainerBounds;
|
||||||
|
RectF currentAppRect = new RectF();
|
||||||
|
|
||||||
SyncRtSurfaceTransactionApplierCompat surfaceApplier =
|
SyncRtSurfaceTransactionApplierCompat surfaceApplier =
|
||||||
new SyncRtSurfaceTransactionApplierCompat(this);
|
new SyncRtSurfaceTransactionApplierCompat(this);
|
||||||
|
@ -810,17 +812,30 @@ public final class IconRecentsView extends FrameLayout implements Insettable {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onUpdate(float percent) {
|
public void onUpdate(float percent) {
|
||||||
appMatrix.preScale(mScaleX.value, mScaleY.value,
|
Matrix m = new Matrix();
|
||||||
|
m.preScale(mScaleX.value, mScaleY.value,
|
||||||
appBounds.width() / 2.0f, appBounds.height() / 2.0f);
|
appBounds.width() / 2.0f, appBounds.height() / 2.0f);
|
||||||
appMatrix.postTranslate(mTranslationX.value, mTranslationY.value);
|
m.postTranslate(mTranslationX.value, mTranslationY.value);
|
||||||
|
appMatrix.preConcat(m);
|
||||||
params[1] = new SurfaceParams(appTarget.leash, mAlpha.value, appMatrix,
|
params[1] = new SurfaceParams(appTarget.leash, mAlpha.value, appMatrix,
|
||||||
null /* windowCrop */, getLayer(appTarget, boostedMode),
|
null /* windowCrop */, getLayer(appTarget, boostedMode),
|
||||||
0 /* cornerRadius */);
|
0 /* cornerRadius */);
|
||||||
surfaceApplier.scheduleApply(params);
|
surfaceApplier.scheduleApply(params);
|
||||||
|
|
||||||
|
m.mapRect(currentAppRect, new RectF(appBounds));
|
||||||
|
setViewToRect(thumbnailView, new RectF(endRect), currentAppRect);
|
||||||
appMatrix.reset();
|
appMatrix.reset();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
remoteAppAnim.addListener(new AnimatorListenerAdapter() {
|
||||||
|
@Override
|
||||||
|
public void onAnimationEnd(Animator animation) {
|
||||||
|
thumbnailView.setTranslationY(0);
|
||||||
|
thumbnailView.setTranslationX(0);
|
||||||
|
thumbnailView.setScaleX(1);
|
||||||
|
thumbnailView.setScaleY(1);
|
||||||
|
}
|
||||||
|
});
|
||||||
anim.play(remoteAppAnim);
|
anim.play(remoteAppAnim);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -886,6 +901,27 @@ public final class IconRecentsView extends FrameLayout implements Insettable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set view properties so that the view fits to the target rect.
|
||||||
|
*
|
||||||
|
* @param view view to set
|
||||||
|
* @param origRect original rect that view was located
|
||||||
|
* @param targetRect rect to set to
|
||||||
|
*/
|
||||||
|
private void setViewToRect(View view, RectF origRect, RectF targetRect) {
|
||||||
|
float dX = targetRect.left - origRect.left;
|
||||||
|
float dY = targetRect.top - origRect.top;
|
||||||
|
view.setTranslationX(dX);
|
||||||
|
view.setTranslationY(dY);
|
||||||
|
|
||||||
|
float scaleX = targetRect.width() / origRect.width();
|
||||||
|
float scaleY = targetRect.height() / origRect.height();
|
||||||
|
view.setPivotX(0);
|
||||||
|
view.setPivotY(0);
|
||||||
|
view.setScaleX(scaleX);
|
||||||
|
view.setScaleY(scaleY);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setInsets(Rect insets) {
|
public void setInsets(Rect insets) {
|
||||||
mInsets = insets;
|
mInsets = insets;
|
||||||
|
|
Loading…
Reference in New Issue