Merge "Remove viewFlipper used in contextual card dismissal." into qt-dev

am: 8b3cde0fb1

Change-Id: Ia9747b66b6e5f4ed332d979fcf6ecbe692bc5180
This commit is contained in:
Yi-Ling Chuang
2019-04-09 10:45:10 -07:00
committed by android-build-merger
9 changed files with 86 additions and 117 deletions

View File

@@ -77,8 +77,7 @@ public class ContextualCardsFragment extends InstrumentedFragment implements
mCardsContainer.setAdapter(mContextualCardsAdapter);
mContextualCardManager.setListener(mContextualCardsAdapter);
mCardsContainer.setListener(this);
mItemTouchHelper = new ItemTouchHelper(
new SwipeDismissalDelegate(context, mContextualCardsAdapter));
mItemTouchHelper = new ItemTouchHelper(new SwipeDismissalDelegate(mContextualCardsAdapter));
mItemTouchHelper.attachToRecyclerView(mCardsContainer);
return rootView;

View File

@@ -24,7 +24,6 @@ import android.util.ArraySet;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ViewFlipper;
import androidx.annotation.LayoutRes;
import androidx.annotation.VisibleForTesting;
@@ -142,7 +141,7 @@ public class SliceContextualCardRenderer implements ContextualCardRenderer, Life
}
if (card.isPendingDismiss()) {
flipCardToDismissalView(holder);
showDismissalView(holder);
mFlippedCardSet.add(holder);
}
}
@@ -170,12 +169,19 @@ public class SliceContextualCardRenderer implements ContextualCardRenderer, Life
}
private void resetCardView(RecyclerView.ViewHolder holder) {
final ViewFlipper viewFlipper = holder.itemView.findViewById(R.id.view_flipper);
viewFlipper.setDisplayedChild(0 /* whichChild */);
holder.itemView.findViewById(R.id.dismissal_view).setVisibility(View.GONE);
getInitialView(holder).setVisibility(View.VISIBLE);
}
private void flipCardToDismissalView(RecyclerView.ViewHolder holder) {
final ViewFlipper viewFlipper = holder.itemView.findViewById(R.id.view_flipper);
viewFlipper.showNext();
private void showDismissalView(RecyclerView.ViewHolder holder) {
holder.itemView.findViewById(R.id.dismissal_view).setVisibility(View.VISIBLE);
getInitialView(holder).setVisibility(View.INVISIBLE);
}
private View getInitialView(RecyclerView.ViewHolder viewHolder) {
if (viewHolder.getItemViewType() == VIEW_TYPE_HALF_WIDTH) {
return ((SliceHalfCardRendererHelper.HalfCardViewHolder) viewHolder).content;
}
return ((SliceFullCardRendererHelper.SliceViewHolder) viewHolder).sliceView;
}
}

View File

@@ -71,12 +71,10 @@ class SliceFullCardRendererHelper {
static class SliceViewHolder extends RecyclerView.ViewHolder {
public final SliceView sliceView;
public final LinearLayout sliceViewWrapper;
public SliceViewHolder(View view) {
super(view);
sliceView = view.findViewById(R.id.slice_view);
sliceViewWrapper = view.findViewById(R.id.slice_view_wrapper);
}
}
}

View File

@@ -16,10 +16,8 @@
package com.android.settings.homepage.contextualcards.slices;
import android.content.Context;
import android.graphics.Canvas;
import android.view.View;
import android.widget.ViewFlipper;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.ItemTouchHelper;
@@ -36,11 +34,9 @@ public class SwipeDismissalDelegate extends ItemTouchHelper.Callback {
void onSwiped(int position);
}
private final Context mContext;
private final SwipeDismissalDelegate.Listener mListener;
public SwipeDismissalDelegate(Context context, SwipeDismissalDelegate.Listener listener) {
mContext = context;
public SwipeDismissalDelegate(SwipeDismissalDelegate.Listener listener) {
mListener = listener;
}
@@ -59,14 +55,10 @@ public class SwipeDismissalDelegate extends ItemTouchHelper.Callback {
switch (viewHolder.getItemViewType()) {
case SliceContextualCardRenderer.VIEW_TYPE_FULL_WIDTH:
case SliceContextualCardRenderer.VIEW_TYPE_HALF_WIDTH:
//TODO(b/129438972): Convert this to a regular view.
final ViewFlipper viewFlipper = viewHolder.itemView.findViewById(R.id.view_flipper);
// As we are using ViewFlipper to switch between the initial view and
// dismissal view, here we are making sure the current displayed view is the
// initial view of either slice full card or half card, and only allow swipe on
// these two types.
if (viewFlipper.getCurrentView().getId() != getInitialViewId(viewHolder)) {
// Here we are making sure the current displayed view is the initial view of
// either slice full card or half card, and only allow swipe on these two types.
if (viewHolder.itemView.findViewById(R.id.dismissal_view).getVisibility()
== View.VISIBLE) {
// Disable swiping when we are in the dismissal view
return 0;
}
@@ -114,13 +106,6 @@ public class SwipeDismissalDelegate extends ItemTouchHelper.Callback {
getDefaultUIUtil().onDraw(c, recyclerView, view, dX, dY, actionState, isCurrentlyActive);
}
private int getInitialViewId(RecyclerView.ViewHolder viewHolder) {
if (viewHolder.getItemViewType() == SliceContextualCardRenderer.VIEW_TYPE_HALF_WIDTH) {
return R.id.content;
}
return R.id.slice_view_wrapper;
}
/**
* Get the foreground view from the {@link android.widget.FrameLayout} as we only swipe
* the foreground out in {@link SwipeDismissalDelegate#onChildDraw} and gets the view
@@ -132,6 +117,6 @@ public class SwipeDismissalDelegate extends ItemTouchHelper.Callback {
if (viewHolder.getItemViewType() == SliceContextualCardRenderer.VIEW_TYPE_HALF_WIDTH) {
return ((SliceHalfCardRendererHelper.HalfCardViewHolder) viewHolder).content;
}
return ((SliceFullCardRendererHelper.SliceViewHolder) viewHolder).sliceViewWrapper;
return ((SliceFullCardRendererHelper.SliceViewHolder) viewHolder).sliceView;
}
}