OSDN Git Service

Add new layout for Slice half card
authorMill Chen <millchen@google.com>
Mon, 10 Dec 2018 13:33:58 +0000 (21:33 +0800)
committerMill Chen <millchen@google.com>
Thu, 20 Dec 2018 06:32:22 +0000 (14:32 +0800)
- 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

res/layout/homepage_dismissal_view.xml [new file with mode: 0644]
res/layout/homepage_slice_half_tile.xml [new file with mode: 0644]
res/layout/homepage_slice_tile.xml
res/values/dimens.xml
src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRenderer.java
tests/robotests/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRendererTest.java

diff --git a/res/layout/homepage_dismissal_view.xml b/res/layout/homepage_dismissal_view.xml
new file mode 100644 (file)
index 0000000..e60b375
--- /dev/null
@@ -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>
\ No newline at end of file
diff --git a/res/layout/homepage_slice_half_tile.xml b/res/layout/homepage_slice_half_tile.xml
new file mode 100644 (file)
index 0000000..7de9eb6
--- /dev/null
@@ -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>
\ No newline at end of file
index 9165abc..9fa7d61 100644 (file)
@@ -22,7 +22,7 @@
     style="@style/ContextualCardStyle">
 
     <ViewFlipper
-        android:id="@+id/viewFlipper"
+        android:id="@+id/view_flipper"
         android:layout_width="match_parent"
         android:layout_height="wrap_content">
 
             android:paddingEnd="@dimen/homepage_card_padding_end"/>
 
         <!--dismissal view-->
-        <LinearLayout
-            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"/>
+        <include layout="@layout/homepage_dismissal_view"/>
 
-            </LinearLayout>
-        </LinearLayout>
     </ViewFlipper>
 </com.google.android.material.card.MaterialCardView>
\ No newline at end of file
index a6c6c37..a109d57 100755 (executable)
     <dimen name="homepage_card_side_margin">4dp</dimen>
     <dimen name="homepage_card_padding_start">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 -->
     <dimen name="horizontal_divider_margin_top">4dp</dimen>
index 17e9d48..c849e57 100644 (file)
@@ -195,7 +195,7 @@ public class SliceContextualCardRenderer implements ContextualCardRenderer,
         public SliceViewHolder(View view) {
             super(view);
             sliceView = view.findViewById(R.id.slice_view);
-            viewFlipper = view.findViewById(R.id.viewFlipper);
+            viewFlipper = view.findViewById(R.id.view_flipper);
         }
 
         public void resetCard() {
index 3407ee3..0b87525 100644 (file)
@@ -128,7 +128,7 @@ public class SliceContextualCardRendererTest {
     public void longClick_shouldFlipCard() {
         final RecyclerView.ViewHolder viewHolder = getSliceViewHolder();
         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);
         mRenderer.bindView(viewHolder, buildContextualCard(TEST_SLICE_URI));
 
@@ -153,7 +153,7 @@ public class SliceContextualCardRendererTest {
         final RecyclerView.ViewHolder viewHolder = getSliceViewHolder();
         final View card = viewHolder.itemView.findViewById(R.id.slice_view);
         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));
 
         card.performLongClick();
@@ -212,7 +212,7 @@ public class SliceContextualCardRendererTest {
     public void onStop_cardIsFlipped_shouldFlipBack() {
         final RecyclerView.ViewHolder viewHolder = getSliceViewHolder();
         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));
 
         card.performLongClick();