Loading quickstep/src/com/android/quickstep/views/RecentsView.java +8 −3 Original line number Diff line number Diff line Loading @@ -72,7 +72,6 @@ import android.text.StaticLayout; import android.text.TextPaint; import android.util.AttributeSet; import android.util.FloatProperty; import android.util.Property; import android.util.SparseBooleanArray; import android.view.HapticFeedbackConstants; import android.view.KeyEvent; Loading Loading @@ -1515,7 +1514,9 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView } int scrollDiff = newScroll[i] - oldScroll[i] + offset; if (scrollDiff != 0) { Property translationProperty = mOrientationHandler.getPrimaryViewTranslate(); FloatProperty translationProperty = child instanceof TaskView ? ((TaskView) child).getPrimaryFillDismissGapTranslationProperty() : mOrientationHandler.getPrimaryViewTranslate(); ResourceProvider rp = DynamicResource.provider(mActivity); SpringProperty sp = new SpringProperty(SpringProperty.FLAG_CAN_SPRING_ON_END) Loading Loading @@ -1927,7 +1928,11 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView ? modalLeftOffsetSize : modalRightOffsetSize; float totalTranslation = translation + modalTranslation; mOrientationHandler.getPrimaryViewTranslate().set(getChildAt(i), View child = getChildAt(i); FloatProperty translationProperty = child instanceof TaskView ? ((TaskView) child).getPrimaryTaskOffsetTranslationProperty() : mOrientationHandler.getPrimaryViewTranslate(); translationProperty.set(child, totalTranslation * mOrientationHandler.getPrimaryTranslationDirectionFactor()); } updateCurveProperties(); Loading quickstep/src/com/android/quickstep/views/TaskView.java +99 −0 Original line number Diff line number Diff line Loading @@ -152,6 +152,58 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable { } }; private static final FloatProperty<TaskView> FILL_DISMISS_GAP_TRANSLATION_X = new FloatProperty<TaskView>("fillDismissGapTranslationX") { @Override public void setValue(TaskView taskView, float v) { taskView.setFillDismissGapTranslationX(v); } @Override public Float get(TaskView taskView) { return taskView.mFillDismissGapTranslationX; } }; private static final FloatProperty<TaskView> FILL_DISMISS_GAP_TRANSLATION_Y = new FloatProperty<TaskView>("fillDismissGapTranslationY") { @Override public void setValue(TaskView taskView, float v) { taskView.setFillDismissGapTranslationY(v); } @Override public Float get(TaskView taskView) { return taskView.mFillDismissGapTranslationY; } }; private static final FloatProperty<TaskView> TASK_OFFSET_TRANSLATION_X = new FloatProperty<TaskView>("taskOffsetTranslationX") { @Override public void setValue(TaskView taskView, float v) { taskView.setTaskOffsetTranslationX(v); } @Override public Float get(TaskView taskView) { return taskView.mTaskOffsetTranslationX; } }; private static final FloatProperty<TaskView> TASK_OFFSET_TRANSLATION_Y = new FloatProperty<TaskView>("taskOffsetTranslationY") { @Override public void setValue(TaskView taskView, float v) { taskView.setTaskOffsetTranslationY(v); } @Override public Float get(TaskView taskView) { return taskView.mTaskOffsetTranslationY; } }; private final OnAttachStateChangeListener mTaskMenuStateListener = new OnAttachStateChangeListener() { @Override Loading Loading @@ -179,6 +231,13 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable { private final FullscreenDrawParams mCurrentFullscreenParams; private final StatefulActivity mActivity; // Various causes of changing primary translation, which we aggregate to setTranslationX/Y(). // TODO: We should do this for secondary translation properties as well. private float mFillDismissGapTranslationX; private float mFillDismissGapTranslationY; private float mTaskOffsetTranslationX; private float mTaskOffsetTranslationY; private ObjectAnimator mIconAndDimAnimator; private float mIconScaleAnimStartProgress = 0; private float mFocusTransitionProgress = 1; Loading Loading @@ -601,6 +660,8 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable { protected void resetViewTransforms() { setCurveScale(1); mFillDismissGapTranslationX = mTaskOffsetTranslationX = 0f; mFillDismissGapTranslationY = mTaskOffsetTranslationY = 0f; setTranslationX(0f); setTranslationY(0f); setTranslationZ(0); Loading Loading @@ -745,6 +806,44 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable { return mCurveScale; } private void setFillDismissGapTranslationX(float x) { mFillDismissGapTranslationX = x; applyTranslationX(); } private void setFillDismissGapTranslationY(float y) { mFillDismissGapTranslationY = y; applyTranslationY(); } private void setTaskOffsetTranslationX(float x) { mTaskOffsetTranslationX = x; applyTranslationX(); } private void setTaskOffsetTranslationY(float y) { mTaskOffsetTranslationY = y; applyTranslationY(); } private void applyTranslationX() { setTranslationX(mFillDismissGapTranslationX + mTaskOffsetTranslationX); } private void applyTranslationY() { setTranslationY(mFillDismissGapTranslationY + mTaskOffsetTranslationY); } public FloatProperty<TaskView> getPrimaryFillDismissGapTranslationProperty() { return getPagedOrientationHandler().getPrimaryValue( FILL_DISMISS_GAP_TRANSLATION_X, FILL_DISMISS_GAP_TRANSLATION_Y); } public FloatProperty<TaskView> getPrimaryTaskOffsetTranslationProperty() { return getPagedOrientationHandler().getPrimaryValue( TASK_OFFSET_TRANSLATION_X, TASK_OFFSET_TRANSLATION_Y); } @Override public boolean hasOverlappingRendering() { // TODO: Clip-out the icon region from the thumbnail, since they are overlapping. Loading Loading
quickstep/src/com/android/quickstep/views/RecentsView.java +8 −3 Original line number Diff line number Diff line Loading @@ -72,7 +72,6 @@ import android.text.StaticLayout; import android.text.TextPaint; import android.util.AttributeSet; import android.util.FloatProperty; import android.util.Property; import android.util.SparseBooleanArray; import android.view.HapticFeedbackConstants; import android.view.KeyEvent; Loading Loading @@ -1515,7 +1514,9 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView } int scrollDiff = newScroll[i] - oldScroll[i] + offset; if (scrollDiff != 0) { Property translationProperty = mOrientationHandler.getPrimaryViewTranslate(); FloatProperty translationProperty = child instanceof TaskView ? ((TaskView) child).getPrimaryFillDismissGapTranslationProperty() : mOrientationHandler.getPrimaryViewTranslate(); ResourceProvider rp = DynamicResource.provider(mActivity); SpringProperty sp = new SpringProperty(SpringProperty.FLAG_CAN_SPRING_ON_END) Loading Loading @@ -1927,7 +1928,11 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView ? modalLeftOffsetSize : modalRightOffsetSize; float totalTranslation = translation + modalTranslation; mOrientationHandler.getPrimaryViewTranslate().set(getChildAt(i), View child = getChildAt(i); FloatProperty translationProperty = child instanceof TaskView ? ((TaskView) child).getPrimaryTaskOffsetTranslationProperty() : mOrientationHandler.getPrimaryViewTranslate(); translationProperty.set(child, totalTranslation * mOrientationHandler.getPrimaryTranslationDirectionFactor()); } updateCurveProperties(); Loading
quickstep/src/com/android/quickstep/views/TaskView.java +99 −0 Original line number Diff line number Diff line Loading @@ -152,6 +152,58 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable { } }; private static final FloatProperty<TaskView> FILL_DISMISS_GAP_TRANSLATION_X = new FloatProperty<TaskView>("fillDismissGapTranslationX") { @Override public void setValue(TaskView taskView, float v) { taskView.setFillDismissGapTranslationX(v); } @Override public Float get(TaskView taskView) { return taskView.mFillDismissGapTranslationX; } }; private static final FloatProperty<TaskView> FILL_DISMISS_GAP_TRANSLATION_Y = new FloatProperty<TaskView>("fillDismissGapTranslationY") { @Override public void setValue(TaskView taskView, float v) { taskView.setFillDismissGapTranslationY(v); } @Override public Float get(TaskView taskView) { return taskView.mFillDismissGapTranslationY; } }; private static final FloatProperty<TaskView> TASK_OFFSET_TRANSLATION_X = new FloatProperty<TaskView>("taskOffsetTranslationX") { @Override public void setValue(TaskView taskView, float v) { taskView.setTaskOffsetTranslationX(v); } @Override public Float get(TaskView taskView) { return taskView.mTaskOffsetTranslationX; } }; private static final FloatProperty<TaskView> TASK_OFFSET_TRANSLATION_Y = new FloatProperty<TaskView>("taskOffsetTranslationY") { @Override public void setValue(TaskView taskView, float v) { taskView.setTaskOffsetTranslationY(v); } @Override public Float get(TaskView taskView) { return taskView.mTaskOffsetTranslationY; } }; private final OnAttachStateChangeListener mTaskMenuStateListener = new OnAttachStateChangeListener() { @Override Loading Loading @@ -179,6 +231,13 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable { private final FullscreenDrawParams mCurrentFullscreenParams; private final StatefulActivity mActivity; // Various causes of changing primary translation, which we aggregate to setTranslationX/Y(). // TODO: We should do this for secondary translation properties as well. private float mFillDismissGapTranslationX; private float mFillDismissGapTranslationY; private float mTaskOffsetTranslationX; private float mTaskOffsetTranslationY; private ObjectAnimator mIconAndDimAnimator; private float mIconScaleAnimStartProgress = 0; private float mFocusTransitionProgress = 1; Loading Loading @@ -601,6 +660,8 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable { protected void resetViewTransforms() { setCurveScale(1); mFillDismissGapTranslationX = mTaskOffsetTranslationX = 0f; mFillDismissGapTranslationY = mTaskOffsetTranslationY = 0f; setTranslationX(0f); setTranslationY(0f); setTranslationZ(0); Loading Loading @@ -745,6 +806,44 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable { return mCurveScale; } private void setFillDismissGapTranslationX(float x) { mFillDismissGapTranslationX = x; applyTranslationX(); } private void setFillDismissGapTranslationY(float y) { mFillDismissGapTranslationY = y; applyTranslationY(); } private void setTaskOffsetTranslationX(float x) { mTaskOffsetTranslationX = x; applyTranslationX(); } private void setTaskOffsetTranslationY(float y) { mTaskOffsetTranslationY = y; applyTranslationY(); } private void applyTranslationX() { setTranslationX(mFillDismissGapTranslationX + mTaskOffsetTranslationX); } private void applyTranslationY() { setTranslationY(mFillDismissGapTranslationY + mTaskOffsetTranslationY); } public FloatProperty<TaskView> getPrimaryFillDismissGapTranslationProperty() { return getPagedOrientationHandler().getPrimaryValue( FILL_DISMISS_GAP_TRANSLATION_X, FILL_DISMISS_GAP_TRANSLATION_Y); } public FloatProperty<TaskView> getPrimaryTaskOffsetTranslationProperty() { return getPagedOrientationHandler().getPrimaryValue( TASK_OFFSET_TRANSLATION_X, TASK_OFFSET_TRANSLATION_Y); } @Override public boolean hasOverlappingRendering() { // TODO: Clip-out the icon region from the thumbnail, since they are overlapping. Loading