Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 061f81e7 authored by Sid Soundararajan's avatar Sid Soundararajan
Browse files

Reset Cards as they come into view

This will ensure that they are in the correct configuration. Needed since
recycler view will be re-using views.

BUG:28632740
Change-Id: Icdaa48696e198cfeb8c37718fec05f7f9b195842
parent 9e5d4e07
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -350,13 +350,6 @@ public class RecentsTvActivity extends Activity implements OnPreDrawListener {
        } else {
            mRecentsView.getViewTreeObserver().addOnPreDrawListener(this);
        }
        if(mTaskStackHorizontalGridView.getStack().getTaskCount() > 1 && !mLaunchedFromHome) {
            // If there are 2 or more tasks, and we are not launching from home
            // set the selected position to the 2nd task to allow for faster app switching
            mTaskStackHorizontalGridView.setSelectedPosition(1);
        } else {
            mTaskStackHorizontalGridView.setSelectedPosition(0);
        }

        // If this is a new instance from a configuration change, then we have to manually trigger
        // the enter animation state, or if recents was relaunched by AM, without going through
@@ -382,6 +375,7 @@ public class RecentsTvActivity extends Activity implements OnPreDrawListener {
        if(mLaunchedFromHome) {
            mHomeRecentsEnterExitAnimationHolder.startEnterAnimation(mPipManager.isPipShown());
        }
        mTaskStackViewAdapter.setResetAddedCards(true);
        EventBus.getDefault().send(new EnterRecentsWindowAnimationCompletedEvent());
    }

@@ -389,12 +383,20 @@ public class RecentsTvActivity extends Activity implements OnPreDrawListener {
    public void onResume() {
        super.onResume();
        mPipRecentsOverlayManager.onRecentsResumed();
        if(mTaskStackHorizontalGridView.getStack().getTaskCount() > 1 && !mLaunchedFromHome) {
            // If there are 2 or more tasks, and we are not launching from home
            // set the selected position to the 2nd task to allow for faster app switching
            mTaskStackHorizontalGridView.setSelectedPosition(1);
        } else {
            mTaskStackHorizontalGridView.setSelectedPosition(0);
        }
    }

    @Override
    public void onPause() {
        super.onPause();
        mPipRecentsOverlayManager.onRecentsPaused();
        mTaskStackViewAdapter.setResetAddedCards(false);
    }

    @Override
+4 −5
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.systemui.recents.tv.animations;
import android.animation.Animator.AnimatorListener;
import android.content.res.Resources;
import android.graphics.drawable.TransitionDrawable;
import android.util.TypedValue;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
@@ -39,7 +38,7 @@ public class DismissAnimationsHolder {
    private TransitionDrawable mDismissDrawable;
    private TextView mDismissText;

    private float mDismissUnselectedAlpha;
    private float mDismissIconNotInDismissStateAlpha;
    private long mShortDuration;
    private long mLongDuration;

@@ -57,7 +56,7 @@ public class DismissAnimationsHolder {
        mDismissStartYDelta = mDismissEnterYDelta * 2;
        mShortDuration =  res.getInteger(R.integer.dismiss_short_duration);
        mLongDuration =  res.getInteger(R.integer.dismiss_long_duration);
        mDismissUnselectedAlpha = res.getFloat(R.integer.dismiss_unselected_alpha);
        mDismissIconNotInDismissStateAlpha = res.getFloat(R.integer.dismiss_unselected_alpha);
    }

    public void startEnterAnimation() {
@@ -94,7 +93,7 @@ public class DismissAnimationsHolder {
        mCardDismissIcon.animate()
                .setDuration(mShortDuration)
                .setInterpolator(Interpolators.FAST_OUT_SLOW_IN)
                .alpha(mDismissUnselectedAlpha)
                .alpha(mDismissIconNotInDismissStateAlpha)
                .withEndAction(new Runnable() {
                    @Override
                    public void run() {
@@ -157,7 +156,7 @@ public class DismissAnimationsHolder {
        mInfoField.animate().setListener(null);
        mThumbnailView.setAlpha(1.0f);
        mThumbnailView.setTranslationY(0);
        mCardDismissIcon.setAlpha(mDismissUnselectedAlpha);
        mCardDismissIcon.setAlpha(0.0f);
        mDismissText.setAlpha(0.0f);
    }
}
+12 −0
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ public class TaskStackHorizontalViewAdapter extends
    private static final String TAG = "TaskStackViewAdapter";
    private List<Task> mTaskList;
    private TaskStackHorizontalGridView mGridView;
    private boolean mResetAddedCards;

    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
        private TaskCardView mTaskCardView;
@@ -125,6 +126,13 @@ public class TaskStackHorizontalViewAdapter extends
        holder.init(mTaskList.get(position));
    }

    @Override
    public void onViewAttachedToWindow(ViewHolder holder) {
        if (mResetAddedCards) {
            holder.mTaskCardView.reset();
        }
    }

    @Override
    public void onViewDetachedFromWindow(ViewHolder holder) {
        // We only want to reset on view detach if this is the last task being dismissed.
@@ -171,4 +179,8 @@ public class TaskStackHorizontalViewAdapter extends
        mTaskList.add(position, task);
        notifyItemInserted(position);
    }

    public void setResetAddedCards(boolean reset) {
        mResetAddedCards = reset;
    }
}