Add new layout for Slice half card

- Extract dismissal view as a layout xml and reuse it in half card
- fixed minor naming convention

This new layout is composed of custom views and the purpose is to
show slice in half width form in contextual homepage.

Bug: 119655434
Test: visual
Change-Id: I224d8bc1b7f95f969f6a134a316bd80b4cd013ee
This commit is contained in:
Mill Chen
2018-12-10 21:33:58 +08:00
parent 08caceba9c
commit 3f3823e456
6 changed files with 123 additions and 39 deletions

View File

@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2018 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dismissal_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/homepage_card_padding_start"
android:layout_marginTop="@dimen/homepage_card_padding_start"
android:text="@string/contextual_card_dismiss_confirm_message"
android:textAppearance="@style/TextAppearance.ContextualCardDismissalText"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="bottom|end">
<Button
android:id="@+id/keep"
style="@style/ContextualCardDismissalButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/contextual_card_dismiss_keep"/>
<Button
android:id="@+id/remove"
style="@style/ContextualCardDismissalButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/contextual_card_dismiss_remove"/>
</LinearLayout>
</LinearLayout>

View File

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2018 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/ContextualCardStyle">
<ViewFlipper
android:id="@+id/view_flipper"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/homepage_card_padding_start"
android:paddingEnd="@dimen/homepage_card_padding_end"
android:paddingTop="@dimen/homepage_half_card_padding_top"
android:paddingBottom="@dimen/homepage_half_card_padding_bottom"
android:orientation="vertical">
<ImageView
android:id="@android:id/icon"
android:layout_width="@dimen/homepage_card_icon_size"
android:layout_height="@dimen/homepage_card_icon_size"
android:tint="?android:attr/colorAccent"/>
<TextView
android:id="@android:id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="2"
android:minLines="1"
android:ellipsize="end"
android:layout_marginTop="@dimen/homepage_half_card_title_margin_top"
android:textAppearance="@style/TextAppearance.ConditionCardTitle"/>
</LinearLayout>
<!--dismissal view-->
<include layout="@layout/homepage_dismissal_view"/>
</ViewFlipper>
</com.google.android.material.card.MaterialCardView>

View File

@@ -22,7 +22,7 @@
style="@style/ContextualCardStyle"> style="@style/ContextualCardStyle">
<ViewFlipper <ViewFlipper
android:id="@+id/viewFlipper" android:id="@+id/view_flipper"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
@@ -34,40 +34,7 @@
android:paddingEnd="@dimen/homepage_card_padding_end"/> android:paddingEnd="@dimen/homepage_card_padding_end"/>
<!--dismissal view--> <!--dismissal view-->
<LinearLayout <include layout="@layout/homepage_dismissal_view"/>
android:id="@+id/dismissal_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/homepage_card_padding_start"
android:layout_marginTop="@dimen/homepage_card_padding_start"
android:text="@string/contextual_card_dismiss_confirm_message"
style="@style/TextAppearance.ContextualCardDismissalText"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="bottom|end">
<Button
android:id="@+id/keep"
style="@style/ContextualCardDismissalButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/contextual_card_dismiss_keep"/>
<Button
android:id="@+id/remove"
style="@style/ContextualCardDismissalButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/contextual_card_dismiss_remove"/>
</LinearLayout>
</LinearLayout>
</ViewFlipper> </ViewFlipper>
</com.google.android.material.card.MaterialCardView> </com.google.android.material.card.MaterialCardView>

View File

@@ -329,6 +329,9 @@
<dimen name="homepage_card_side_margin">4dp</dimen> <dimen name="homepage_card_side_margin">4dp</dimen>
<dimen name="homepage_card_padding_start">16dp</dimen> <dimen name="homepage_card_padding_start">16dp</dimen>
<dimen name="homepage_card_padding_end">16dp</dimen> <dimen name="homepage_card_padding_end">16dp</dimen>
<dimen name="homepage_half_card_padding_top">12dp</dimen>
<dimen name="homepage_half_card_padding_bottom">16dp</dimen>
<dimen name="homepage_half_card_title_margin_top">12dp</dimen>
<!-- Horizontal divider size and margin --> <!-- Horizontal divider size and margin -->
<dimen name="horizontal_divider_margin_top">4dp</dimen> <dimen name="horizontal_divider_margin_top">4dp</dimen>

View File

@@ -195,7 +195,7 @@ public class SliceContextualCardRenderer implements ContextualCardRenderer,
public SliceViewHolder(View view) { public SliceViewHolder(View view) {
super(view); super(view);
sliceView = view.findViewById(R.id.slice_view); sliceView = view.findViewById(R.id.slice_view);
viewFlipper = view.findViewById(R.id.viewFlipper); viewFlipper = view.findViewById(R.id.view_flipper);
} }
public void resetCard() { public void resetCard() {

View File

@@ -128,7 +128,7 @@ public class SliceContextualCardRendererTest {
public void longClick_shouldFlipCard() { public void longClick_shouldFlipCard() {
final RecyclerView.ViewHolder viewHolder = getSliceViewHolder(); final RecyclerView.ViewHolder viewHolder = getSliceViewHolder();
final View card = viewHolder.itemView.findViewById(R.id.slice_view); final View card = viewHolder.itemView.findViewById(R.id.slice_view);
final ViewFlipper viewFlipper = viewHolder.itemView.findViewById(R.id.viewFlipper); final ViewFlipper viewFlipper = viewHolder.itemView.findViewById(R.id.view_flipper);
final View dismissalView = viewHolder.itemView.findViewById(R.id.dismissal_view); final View dismissalView = viewHolder.itemView.findViewById(R.id.dismissal_view);
mRenderer.bindView(viewHolder, buildContextualCard(TEST_SLICE_URI)); mRenderer.bindView(viewHolder, buildContextualCard(TEST_SLICE_URI));
@@ -153,7 +153,7 @@ public class SliceContextualCardRendererTest {
final RecyclerView.ViewHolder viewHolder = getSliceViewHolder(); final RecyclerView.ViewHolder viewHolder = getSliceViewHolder();
final View card = viewHolder.itemView.findViewById(R.id.slice_view); final View card = viewHolder.itemView.findViewById(R.id.slice_view);
final Button btnKeep = viewHolder.itemView.findViewById(R.id.keep); final Button btnKeep = viewHolder.itemView.findViewById(R.id.keep);
final ViewFlipper viewFlipper = viewHolder.itemView.findViewById(R.id.viewFlipper); final ViewFlipper viewFlipper = viewHolder.itemView.findViewById(R.id.view_flipper);
mRenderer.bindView(viewHolder, buildContextualCard(TEST_SLICE_URI)); mRenderer.bindView(viewHolder, buildContextualCard(TEST_SLICE_URI));
card.performLongClick(); card.performLongClick();
@@ -212,7 +212,7 @@ public class SliceContextualCardRendererTest {
public void onStop_cardIsFlipped_shouldFlipBack() { public void onStop_cardIsFlipped_shouldFlipBack() {
final RecyclerView.ViewHolder viewHolder = getSliceViewHolder(); final RecyclerView.ViewHolder viewHolder = getSliceViewHolder();
final View card = viewHolder.itemView.findViewById(R.id.slice_view); final View card = viewHolder.itemView.findViewById(R.id.slice_view);
final ViewFlipper viewFlipper = viewHolder.itemView.findViewById(R.id.viewFlipper); final ViewFlipper viewFlipper = viewHolder.itemView.findViewById(R.id.view_flipper);
mRenderer.bindView(viewHolder, buildContextualCard(TEST_SLICE_URI)); mRenderer.bindView(viewHolder, buildContextualCard(TEST_SLICE_URI));
card.performLongClick(); card.performLongClick();