Visual update: remove card elevation for homepage cards.

- Replace CardView with MaterialCardView
- Add strokeColor and strokeWidth to MaterialCardView
- Set cardElevation to 0dp.

And remove a few unused layout, clean up color lint whitelist.

Test: rebuild, visual
Change-Id: I34a4b9a985cb85c212e123b8af5353d8c548923a
This commit is contained in:
Fan Zhang
2018-11-27 14:29:45 -08:00
parent 8bda3a5956
commit a60652a973
17 changed files with 155 additions and 786 deletions

View File

@@ -19,11 +19,10 @@ package com.android.settings.homepage.contextualcards.conditional;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.Context;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
@@ -40,7 +39,8 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.Robolectric;
import org.robolectric.android.controller.ActivityController;
@RunWith(SettingsRobolectricTestRunner.class)
public class ConditionContextualCardRendererTest {
@@ -49,25 +49,29 @@ public class ConditionContextualCardRendererTest {
private ControllerRendererPool mControllerRendererPool;
@Mock
private ConditionContextualCardController mController;
private Context mContext;
private Activity mActivity;
private ConditionContextualCardRenderer mRenderer;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
mRenderer = new ConditionContextualCardRenderer(mContext, mControllerRendererPool);
final ActivityController<Activity> activityController = Robolectric.buildActivity(
Activity.class);
mActivity = activityController.get();
mActivity.setTheme(R.style.Theme_AppCompat);
activityController.create();
mRenderer = new ConditionContextualCardRenderer(mActivity, mControllerRendererPool);
}
@Test
public void bindView_shouldSetListener() {
final int viewType = mRenderer.getViewType(false /* isHalfWidth */);
final RecyclerView recyclerView = new RecyclerView(mContext);
recyclerView.setLayoutManager(new LinearLayoutManager(mContext));
final View view = LayoutInflater.from(mContext).inflate(viewType, recyclerView, false);
final RecyclerView recyclerView = new RecyclerView(mActivity);
recyclerView.setLayoutManager(new LinearLayoutManager(mActivity));
final View view = LayoutInflater.from(mActivity).inflate(viewType, recyclerView, false);
final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(view);
final View card = view.findViewById(R.id.content);
when(mControllerRendererPool.getController(mContext,
when(mControllerRendererPool.getController(mActivity,
ContextualCard.CardType.CONDITIONAL)).thenReturn(mController);
mRenderer.bindView(viewHolder, buildConditionContextualCard());
@@ -79,12 +83,12 @@ public class ConditionContextualCardRendererTest {
@Test
public void viewClick_shouldInvokeControllerPrimaryClick() {
final int viewType = mRenderer.getViewType(false /* isHalfWidth */);
final RecyclerView recyclerView = new RecyclerView(mContext);
recyclerView.setLayoutManager(new LinearLayoutManager(mContext));
final View view = LayoutInflater.from(mContext).inflate(viewType, recyclerView, false);
final RecyclerView recyclerView = new RecyclerView(mActivity);
recyclerView.setLayoutManager(new LinearLayoutManager(mActivity));
final View view = LayoutInflater.from(mActivity).inflate(viewType, recyclerView, false);
final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(view);
final View card = view.findViewById(R.id.content);
when(mControllerRendererPool.getController(mContext,
when(mControllerRendererPool.getController(mActivity,
ContextualCard.CardType.CONDITIONAL)).thenReturn(mController);
mRenderer.bindView(viewHolder, buildConditionContextualCard());
@@ -103,7 +107,7 @@ public class ConditionContextualCardRendererTest {
.setName("test_name")
.setTitleText("test_title")
.setSummaryText("test_summary")
.setIconDrawable(mContext.getDrawable(R.drawable.ic_do_not_disturb_on_24dp))
.setIconDrawable(mActivity.getDrawable(R.drawable.ic_do_not_disturb_on_24dp))
.setIsHalfWidth(true)
.build();
}

View File

@@ -18,17 +18,17 @@ package com.android.settings.homepage.contextualcards.conditional;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.Context;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.android.settings.R;
import com.android.settings.homepage.contextualcards.ContextualCard;
import com.android.settings.homepage.contextualcards.ControllerRendererPool;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
@@ -38,7 +38,8 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.Robolectric;
import org.robolectric.android.controller.ActivityController;
import java.util.ArrayList;
import java.util.List;
@@ -50,24 +51,28 @@ public class ConditionHeaderContextualCardRendererTest {
private ControllerRendererPool mControllerRendererPool;
@Mock
private ConditionContextualCardController mController;
private Context mContext;
private Activity mActivity;
private ConditionHeaderContextualCardRenderer mRenderer;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
mRenderer = new ConditionHeaderContextualCardRenderer(mContext, mControllerRendererPool);
final ActivityController<Activity> activityController = Robolectric.buildActivity(
Activity.class);
mActivity = activityController.get();
mActivity.setTheme(R.style.Theme_AppCompat);
activityController.create();
mRenderer = new ConditionHeaderContextualCardRenderer(mActivity, mControllerRendererPool);
}
@Test
public void bindView_shouldSetClickListener() {
final int viewType = mRenderer.getViewType(false /* isHalfWidth */);
final RecyclerView recyclerView = new RecyclerView(mContext);
recyclerView.setLayoutManager(new LinearLayoutManager(mContext));
final View view = LayoutInflater.from(mContext).inflate(viewType, recyclerView, false);
final RecyclerView recyclerView = new RecyclerView(mActivity);
recyclerView.setLayoutManager(new LinearLayoutManager(mActivity));
final View view = LayoutInflater.from(mActivity).inflate(viewType, recyclerView, false);
final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(view);
when(mControllerRendererPool.getController(mContext,
when(mControllerRendererPool.getController(mActivity,
ContextualCard.CardType.CONDITIONAL_HEADER)).thenReturn(mController);
mRenderer.bindView(viewHolder, generateConditionHeaderContextualCard());
@@ -79,11 +84,11 @@ public class ConditionHeaderContextualCardRendererTest {
@Test
public void bindView_clickView_shouldSetTrueToIsConditionExpanded() {
final int viewType = mRenderer.getViewType(false /* isHalfWidth */);
final RecyclerView recyclerView = new RecyclerView(mContext);
recyclerView.setLayoutManager(new LinearLayoutManager(mContext));
final View view = LayoutInflater.from(mContext).inflate(viewType, recyclerView, false);
final RecyclerView recyclerView = new RecyclerView(mActivity);
recyclerView.setLayoutManager(new LinearLayoutManager(mActivity));
final View view = LayoutInflater.from(mActivity).inflate(viewType, recyclerView, false);
final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(view);
when(mControllerRendererPool.getController(mContext,
when(mControllerRendererPool.getController(mActivity,
ContextualCard.CardType.CONDITIONAL_HEADER)).thenReturn(mController);
mRenderer.bindView(viewHolder, generateConditionHeaderContextualCard());

View File

@@ -23,7 +23,7 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.Context;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
@@ -40,7 +40,8 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.Robolectric;
import org.robolectric.android.controller.ActivityController;
@RunWith(SettingsRobolectricTestRunner.class)
public class LegacySuggestionContextualCardRendererTest {
@@ -48,26 +49,31 @@ public class LegacySuggestionContextualCardRendererTest {
private ControllerRendererPool mControllerRendererPool;
@Mock
private LegacySuggestionContextualCardController mController;
private Context mContext;
private Activity mActivity;
private LegacySuggestionContextualCardRenderer mRenderer;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
mRenderer = new LegacySuggestionContextualCardRenderer(mContext, mControllerRendererPool);
final ActivityController<Activity> activityController = Robolectric.buildActivity(
Activity.class);
mActivity = activityController.get();
mActivity.setTheme(R.style.Theme_AppCompat);
activityController.create();
mRenderer = new LegacySuggestionContextualCardRenderer(mActivity, mControllerRendererPool);
}
@Test
public void bindView_shouldSetListener() {
final int viewType = mRenderer.getViewType(true /* isHalfWidth */);
final RecyclerView recyclerView = new RecyclerView(mContext);
recyclerView.setLayoutManager(new LinearLayoutManager(mContext));
final View card = LayoutInflater.from(mContext).inflate(viewType, recyclerView, false);
final RecyclerView recyclerView = new RecyclerView(mActivity);
recyclerView.setLayoutManager(new LinearLayoutManager(mActivity));
final View card = LayoutInflater.from(mActivity).inflate(viewType, recyclerView, false);
final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(card);
when(mControllerRendererPool.getController(mContext,
when(mControllerRendererPool.getController(mActivity,
ContextualCard.CardType.LEGACY_SUGGESTION)).thenReturn(mController);
mRenderer.bindView(viewHolder, buildContextualCard());
@@ -79,11 +85,11 @@ public class LegacySuggestionContextualCardRendererTest {
@Test
public void viewClick_shouldInvokeControllerPrimaryClick() {
final int viewType = mRenderer.getViewType(true /* isHalfWidth */);
final RecyclerView recyclerView = new RecyclerView(mContext);
recyclerView.setLayoutManager(new LinearLayoutManager(mContext));
final View card = LayoutInflater.from(mContext).inflate(viewType, recyclerView, false);
final RecyclerView recyclerView = new RecyclerView(mActivity);
recyclerView.setLayoutManager(new LinearLayoutManager(mActivity));
final View card = LayoutInflater.from(mActivity).inflate(viewType, recyclerView, false);
final RecyclerView.ViewHolder viewHolder = mRenderer.createViewHolder(card);
when(mControllerRendererPool.getController(mContext,
when(mControllerRendererPool.getController(mActivity,
ContextualCard.CardType.LEGACY_SUGGESTION)).thenReturn(mController);
mRenderer.bindView(viewHolder, buildContextualCard());
@@ -99,7 +105,7 @@ public class LegacySuggestionContextualCardRendererTest {
.setName("test_name")
.setTitleText("test_title")
.setSummaryText("test_summary")
.setIconDrawable(mContext.getDrawable(R.drawable.ic_do_not_disturb_on_24dp))
.setIconDrawable(mActivity.getDrawable(R.drawable.ic_do_not_disturb_on_24dp))
.build();
}
}

View File

@@ -20,7 +20,7 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.verify;
import android.content.Context;
import android.app.Activity;
import android.net.Uri;
import android.view.LayoutInflater;
import android.view.View;
@@ -45,7 +45,8 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.Robolectric;
import org.robolectric.android.controller.ActivityController;
@RunWith(SettingsRobolectricTestRunner.class)
public class SliceContextualCardRendererTest {
@@ -54,19 +55,21 @@ public class SliceContextualCardRendererTest {
private LiveData<Slice> mSliceLiveData;
@Mock
private ControllerRendererPool mControllerRendererPool;
@Mock
private SliceContextualCardController mController;
private Context mContext;
private Activity mActivity;
private SliceContextualCardRenderer mRenderer;
private LifecycleOwner mLifecycleOwner;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
final ActivityController<Activity> activityController = Robolectric.buildActivity(
Activity.class);
mActivity = activityController.get();
mActivity.setTheme(R.style.Theme_AppCompat);
activityController.create();
mLifecycleOwner = new ContextualCardsFragment();
mRenderer = new SliceContextualCardRenderer(mContext, mLifecycleOwner,
mRenderer = new SliceContextualCardRenderer(mActivity, mLifecycleOwner,
mControllerRendererPool);
}
@@ -156,9 +159,9 @@ public class SliceContextualCardRendererTest {
private RecyclerView.ViewHolder getSliceViewHolder() {
final int viewType = mRenderer.getViewType(false /* isHalfWidth */);
final RecyclerView recyclerView = new RecyclerView(mContext);
recyclerView.setLayoutManager(new LinearLayoutManager(mContext));
final View view = LayoutInflater.from(mContext).inflate(viewType, recyclerView, false);
final RecyclerView recyclerView = new RecyclerView(mActivity);
recyclerView.setLayoutManager(new LinearLayoutManager(mActivity));
final View view = LayoutInflater.from(mActivity).inflate(viewType, recyclerView, false);
return mRenderer.createViewHolder(view);
}