Merge "Separate TaskView translationX into dismiss + offset translations"
This commit is contained in:
commit
e3a0474116
|
@ -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;
|
||||
|
@ -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)
|
||||
|
@ -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();
|
||||
|
|
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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…
Reference in New Issue