Merge "Fix issue with All Tasks Dismissed" into nyc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
80295544c1
@@ -55,6 +55,7 @@ import com.android.systemui.recents.tv.animations.HomeRecentsEnterExitAnimationH
|
||||
import com.android.systemui.recents.tv.views.RecentsTvView;
|
||||
import com.android.systemui.recents.tv.views.TaskStackHorizontalGridView;
|
||||
import com.android.systemui.recents.tv.views.TaskStackHorizontalViewAdapter;
|
||||
import com.android.systemui.recents.views.AnimationProps;
|
||||
import com.android.systemui.statusbar.BaseStatusBar;
|
||||
import com.android.systemui.tv.pip.PipManager;
|
||||
import com.android.systemui.tv.pip.PipRecentsOverlayManager;
|
||||
@@ -246,7 +247,7 @@ public class RecentsTvActivity extends Activity implements OnPreDrawListener {
|
||||
dismissEvent.addPostAnimationCallback(mFinishLaunchHomeRunnable);
|
||||
dismissEvent.addPostAnimationCallback(closeSystemWindows);
|
||||
|
||||
if(mTaskStackHorizontalGridView.getChildCount() > 0) {
|
||||
if(mTaskStackHorizontalGridView.getChildCount() > 0 && animateTaskViews) {
|
||||
mHomeRecentsEnterExitAnimationHolder.startExitAnimation(dismissEvent);
|
||||
} else {
|
||||
closeSystemWindows.run();
|
||||
@@ -494,12 +495,10 @@ public class RecentsTvActivity extends Activity implements OnPreDrawListener {
|
||||
}
|
||||
|
||||
public final void onBusEvent(AllTaskViewsDismissedEvent event) {
|
||||
SystemServicesProxy ssp = Recents.getSystemServices();
|
||||
if (ssp.hasDockedTask()) {
|
||||
if (mPipManager.isPipShown()) {
|
||||
mRecentsView.showEmptyView();
|
||||
} else {
|
||||
// Just go straight home (no animation necessary because there are no more task views)
|
||||
dismissRecentsToHome(false /* animateTaskViews */);
|
||||
dismissRecentsToHome(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -26,13 +26,13 @@ import com.android.systemui.R;
|
||||
|
||||
public class DismissAnimationsHolder {
|
||||
private LinearLayout mDismissArea;
|
||||
private LinearLayout mTaskCardView;
|
||||
private LinearLayout mRecentsTvCard;
|
||||
private int mCardYDelta;
|
||||
private long mShortDuration;
|
||||
private long mLongDuration;
|
||||
|
||||
public DismissAnimationsHolder(TaskCardView taskCardView) {
|
||||
mTaskCardView = (LinearLayout) taskCardView.findViewById(R.id.recents_tv_card);
|
||||
mRecentsTvCard = (LinearLayout) taskCardView.findViewById(R.id.recents_tv_card);
|
||||
mDismissArea = (LinearLayout) taskCardView.findViewById(R.id.card_dismiss);
|
||||
|
||||
Resources res = taskCardView.getResources();
|
||||
@@ -47,7 +47,7 @@ public class DismissAnimationsHolder {
|
||||
.setInterpolator(Interpolators.FAST_OUT_SLOW_IN)
|
||||
.alpha(1.0f);
|
||||
|
||||
mTaskCardView.animate()
|
||||
mRecentsTvCard.animate()
|
||||
.setDuration(mShortDuration)
|
||||
.setInterpolator(Interpolators.FAST_OUT_SLOW_IN)
|
||||
.translationYBy(mCardYDelta)
|
||||
@@ -60,7 +60,7 @@ public class DismissAnimationsHolder {
|
||||
.setInterpolator(Interpolators.FAST_OUT_SLOW_IN)
|
||||
.alpha(0.0f);
|
||||
|
||||
mTaskCardView.animate()
|
||||
mRecentsTvCard.animate()
|
||||
.setDuration(mShortDuration)
|
||||
.setInterpolator(Interpolators.FAST_OUT_SLOW_IN)
|
||||
.translationYBy(-mCardYDelta)
|
||||
@@ -73,11 +73,17 @@ public class DismissAnimationsHolder {
|
||||
.setInterpolator(Interpolators.FAST_OUT_SLOW_IN)
|
||||
.alpha(0.0f);
|
||||
|
||||
mTaskCardView.animate()
|
||||
mRecentsTvCard.animate()
|
||||
.setDuration(mLongDuration)
|
||||
.setInterpolator(Interpolators.FAST_OUT_SLOW_IN)
|
||||
.translationYBy(mCardYDelta)
|
||||
.alpha(0.0f)
|
||||
.setListener(listener);
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
mRecentsTvCard.setAlpha(1.0f);
|
||||
mRecentsTvCard.setTranslationY(0);
|
||||
mRecentsTvCard.animate().setListener(null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -250,8 +250,9 @@ public class RecentsTvView extends FrameLayout {
|
||||
|
||||
public TaskStackHorizontalGridView setTaskStackViewAdapter(
|
||||
TaskStackHorizontalViewAdapter taskStackViewAdapter) {
|
||||
if(mTaskStackHorizontalView != null) {
|
||||
if (mTaskStackHorizontalView != null) {
|
||||
mTaskStackHorizontalView.setAdapter(taskStackViewAdapter);
|
||||
taskStackViewAdapter.setTaskStackHorizontalGridView(mTaskStackHorizontalView);
|
||||
}
|
||||
return mTaskStackHorizontalView;
|
||||
}
|
||||
|
||||
@@ -189,6 +189,7 @@ public class TaskCardView extends LinearLayout {
|
||||
}
|
||||
|
||||
public void startDismissTaskAnimation(Animator.AnimatorListener listener) {
|
||||
mDismissState = false;
|
||||
mDismissAnimationsHolder.startDismissAnimation(listener);
|
||||
}
|
||||
|
||||
@@ -201,4 +202,10 @@ public class TaskCardView extends LinearLayout {
|
||||
super.onDetachedFromWindow();
|
||||
setDismissState(false);
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
mDismissState = false;
|
||||
mRecentsRowFocusAnimationHolder.reset();
|
||||
mDismissAnimationsHolder.reset();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -179,13 +179,14 @@ public class TaskStackHorizontalGridView extends HorizontalGridView implements T
|
||||
|
||||
@Override
|
||||
public void onStackTaskAdded(TaskStack stack, Task newTask) {
|
||||
getAdapter().notifyItemInserted(stack.getStackTasks().indexOf(newTask));
|
||||
((TaskStackHorizontalViewAdapter) getAdapter()).addTaskAt(newTask,
|
||||
stack.indexOfStackTask(newTask));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStackTaskRemoved(TaskStack stack, Task removedTask, boolean wasFrontMostTask,
|
||||
Task newFrontMostTask, AnimationProps animation, boolean fromDockGesture) {
|
||||
getAdapter().notifyItemRemoved(stack.getStackTasks().indexOf(removedTask));
|
||||
((TaskStackHorizontalViewAdapter) getAdapter()).removeTask(removedTask);
|
||||
if (mFocusedTask == removedTask) {
|
||||
resetFocusedTask(removedTask);
|
||||
}
|
||||
|
||||
@@ -27,7 +27,9 @@ import com.android.systemui.R;
|
||||
import com.android.systemui.recents.events.EventBus;
|
||||
import com.android.systemui.recents.events.activity.LaunchTvTaskEvent;
|
||||
import com.android.systemui.recents.events.ui.DeleteTaskDataEvent;
|
||||
import com.android.systemui.recents.events.ui.TaskViewDismissedEvent;
|
||||
import com.android.systemui.recents.model.Task;
|
||||
import com.android.systemui.recents.views.AnimationProps;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -40,6 +42,7 @@ public class TaskStackHorizontalViewAdapter extends
|
||||
//Full class name is 30 characters
|
||||
private static final String TAG = "TaskStackViewAdapter";
|
||||
private List<Task> mTaskList;
|
||||
private TaskStackHorizontalGridView mGridView;
|
||||
|
||||
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
|
||||
private TaskCardView mTaskCardView;
|
||||
@@ -62,7 +65,7 @@ public class TaskStackHorizontalViewAdapter extends
|
||||
try {
|
||||
if (mTaskCardView.isInDismissState()) {
|
||||
mTaskCardView.startDismissTaskAnimation(
|
||||
getRemoveAtListener(getAdapterPosition(), mTaskCardView));
|
||||
getRemoveAtListener(getAdapterPosition(), mTaskCardView.getTask()));
|
||||
} else {
|
||||
EventBus.getDefault().send(new LaunchTvTaskEvent(mTaskCardView, mTask,
|
||||
null, INVALID_STACK_ID));
|
||||
@@ -74,6 +77,28 @@ public class TaskStackHorizontalViewAdapter extends
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private Animator.AnimatorListener getRemoveAtListener(final int position,
|
||||
final Task task) {
|
||||
return new Animator.AnimatorListener() {
|
||||
|
||||
@Override
|
||||
public void onAnimationStart(Animator animation) { }
|
||||
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
removeAt(position);
|
||||
EventBus.getDefault().send(new DeleteTaskDataEvent(task));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAnimationCancel(Animator animation) { }
|
||||
|
||||
@Override
|
||||
public void onAnimationRepeat(Animator animation) { }
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public TaskStackHorizontalViewAdapter(List tasks) {
|
||||
@@ -100,40 +125,44 @@ public class TaskStackHorizontalViewAdapter extends
|
||||
holder.init(mTaskList.get(position));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewDetachedFromWindow(ViewHolder holder) {
|
||||
holder.mTaskCardView.reset();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return mTaskList.size();
|
||||
}
|
||||
|
||||
private Animator.AnimatorListener getRemoveAtListener(final int position,
|
||||
final TaskCardView taskCardView) {
|
||||
return new Animator.AnimatorListener() {
|
||||
|
||||
@Override
|
||||
public void onAnimationStart(Animator animation) { }
|
||||
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
removeAt(position);
|
||||
EventBus.getDefault().send(new DeleteTaskDataEvent(taskCardView.getTask()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAnimationCancel(Animator animation) { }
|
||||
|
||||
@Override
|
||||
public void onAnimationRepeat(Animator animation) { }
|
||||
};
|
||||
|
||||
private void removeAt(int position) {
|
||||
Task removedTask = mTaskList.remove(position);
|
||||
if (mGridView != null) {
|
||||
mGridView.getStack().removeTask(removedTask, AnimationProps.IMMEDIATE,
|
||||
false);
|
||||
}
|
||||
notifyItemRemoved(position);
|
||||
}
|
||||
|
||||
private void removeAt(int position) {
|
||||
mTaskList.remove(position);
|
||||
notifyItemRemoved(position);
|
||||
public void removeTask(Task task) {
|
||||
int position = mTaskList.indexOf(task);
|
||||
if (position >= 0) {
|
||||
mTaskList.remove(position);
|
||||
notifyItemRemoved(position);
|
||||
}
|
||||
}
|
||||
|
||||
public int getPositionOfTask(Task task) {
|
||||
int position = mTaskList.indexOf(task);
|
||||
return (position >= 0) ? position : 0;
|
||||
}
|
||||
|
||||
public void setTaskStackHorizontalGridView(TaskStackHorizontalGridView gridView) {
|
||||
mGridView = gridView;
|
||||
}
|
||||
|
||||
public void addTaskAt(Task task, int position) {
|
||||
mTaskList.add(position, task);
|
||||
notifyItemInserted(position);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user