Use separate layout for un-selected page previews
- Make remove icon more visible by removing the translucency in icon
- Replace remove and check icon by vectors
- unselected pages are now not faded out by being 50% translucent to the
page shadow anymore, they are explcityly faded out by being 50% translucent
to a defined background color
- No need for our own animations as the recyclerview does all the
animations for us
Fixes: 28885729
Change-Id: I70d2db89c4124bf5ef528c65b5f79d189da43857
diff --git a/packages/PrintSpooler/res/drawable-hdpi/ic_check_circle.png b/packages/PrintSpooler/res/drawable-hdpi/ic_check_circle.png
deleted file mode 100644
index 4ad5417..0000000
--- a/packages/PrintSpooler/res/drawable-hdpi/ic_check_circle.png
+++ /dev/null
Binary files differ
diff --git a/packages/PrintSpooler/res/drawable-hdpi/ic_remove_circle.png b/packages/PrintSpooler/res/drawable-hdpi/ic_remove_circle.png
deleted file mode 100644
index ef053b6..0000000
--- a/packages/PrintSpooler/res/drawable-hdpi/ic_remove_circle.png
+++ /dev/null
Binary files differ
diff --git a/packages/PrintSpooler/res/drawable-mdpi/ic_check_circle.png b/packages/PrintSpooler/res/drawable-mdpi/ic_check_circle.png
deleted file mode 100644
index f66065a..0000000
--- a/packages/PrintSpooler/res/drawable-mdpi/ic_check_circle.png
+++ /dev/null
Binary files differ
diff --git a/packages/PrintSpooler/res/drawable-mdpi/ic_remove_circle.png b/packages/PrintSpooler/res/drawable-mdpi/ic_remove_circle.png
deleted file mode 100644
index 7e044ac..0000000
--- a/packages/PrintSpooler/res/drawable-mdpi/ic_remove_circle.png
+++ /dev/null
Binary files differ
diff --git a/packages/PrintSpooler/res/drawable-xhdpi/ic_check_circle.png b/packages/PrintSpooler/res/drawable-xhdpi/ic_check_circle.png
deleted file mode 100644
index d8ea4d29..0000000
--- a/packages/PrintSpooler/res/drawable-xhdpi/ic_check_circle.png
+++ /dev/null
Binary files differ
diff --git a/packages/PrintSpooler/res/drawable-xhdpi/ic_remove_circle.png b/packages/PrintSpooler/res/drawable-xhdpi/ic_remove_circle.png
deleted file mode 100644
index 622989c..0000000
--- a/packages/PrintSpooler/res/drawable-xhdpi/ic_remove_circle.png
+++ /dev/null
Binary files differ
diff --git a/packages/PrintSpooler/res/drawable-xxhdpi/ic_check_circle.png b/packages/PrintSpooler/res/drawable-xxhdpi/ic_check_circle.png
deleted file mode 100644
index ac36eba..0000000
--- a/packages/PrintSpooler/res/drawable-xxhdpi/ic_check_circle.png
+++ /dev/null
Binary files differ
diff --git a/packages/PrintSpooler/res/drawable-xxhdpi/ic_remove_circle.png b/packages/PrintSpooler/res/drawable-xxhdpi/ic_remove_circle.png
deleted file mode 100644
index 303ccfb..0000000
--- a/packages/PrintSpooler/res/drawable-xxhdpi/ic_remove_circle.png
+++ /dev/null
Binary files differ
diff --git a/packages/PrintSpooler/res/drawable-xxxhdpi/ic_check_circle.png b/packages/PrintSpooler/res/drawable-xxxhdpi/ic_check_circle.png
deleted file mode 100644
index 1737f0a..0000000
--- a/packages/PrintSpooler/res/drawable-xxxhdpi/ic_check_circle.png
+++ /dev/null
Binary files differ
diff --git a/packages/PrintSpooler/res/drawable-xxxhdpi/ic_remove_circle.png b/packages/PrintSpooler/res/drawable-xxxhdpi/ic_remove_circle.png
deleted file mode 100644
index e9c6252..0000000
--- a/packages/PrintSpooler/res/drawable-xxxhdpi/ic_remove_circle.png
+++ /dev/null
Binary files differ
diff --git a/packages/PrintSpooler/res/drawable/ic_check_circle.xml b/packages/PrintSpooler/res/drawable/ic_check_circle.xml
new file mode 100644
index 0000000..0a07b1a
--- /dev/null
+++ b/packages/PrintSpooler/res/drawable/ic_check_circle.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 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.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM10,17l-5,-5 1.41,-1.41L10,14.17l7.59,-7.59L19,8l-9,9z"
+ android:fillColor="?android:attr/colorAccent" />
+</vector>
diff --git a/packages/PrintSpooler/res/drawable/ic_remove_circle.xml b/packages/PrintSpooler/res/drawable/ic_remove_circle.xml
new file mode 100644
index 0000000..50ce2e8
--- /dev/null
+++ b/packages/PrintSpooler/res/drawable/ic_remove_circle.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 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.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM17,13L7,13v-2h10v2z"
+ android:fillColor="?android:attr/colorAccent" />
+</vector>
diff --git a/packages/PrintSpooler/res/drawable/page_selector_background.xml b/packages/PrintSpooler/res/drawable/page_selector_background.xml
deleted file mode 100644
index 4d32328..0000000
--- a/packages/PrintSpooler/res/drawable/page_selector_background.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android"
- android:enterFadeDuration="@android:integer/config_shortAnimTime"
- android:exitFadeDuration="@android:integer/config_shortAnimTime">
-
- <item
- android:state_selected="true">
- <bitmap
- android:src="@drawable/ic_check_circle"
- android:tint="?android:attr/colorAccent">
- </bitmap>
- </item>
-
- <item>
- <bitmap
- android:src="@drawable/ic_remove_circle"
- android:tint="?android:attr/colorAccent">
- </bitmap>
- </item>
-
-</selector>
diff --git a/packages/PrintSpooler/res/layout/preview_page.xml b/packages/PrintSpooler/res/layout/preview_page.xml
index edce289..aafdd8f 100644
--- a/packages/PrintSpooler/res/layout/preview_page.xml
+++ b/packages/PrintSpooler/res/layout/preview_page.xml
@@ -20,12 +20,14 @@
android:layout_height="wrap_content"
android:layout_margin="@dimen/preview_page_margin"
android:orientation="vertical"
- android:background="?android:attr/colorForeground">
+ android:background="@color/unselected_page_background_color"
+ android:elevation="@dimen/unselected_page_elevation" >
<com.android.printspooler.widget.PageContentView
android:id="@+id/page_content"
android:layout_width="fill_parent"
- android:layout_height="fill_parent">
+ android:layout_height="fill_parent"
+ android:alpha="0.5">
</com.android.printspooler.widget.PageContentView>
<RelativeLayout
@@ -34,7 +36,7 @@
android:layout_height="@dimen/preview_page_footer_height"
android:background="@color/material_grey_500"
android:orientation="horizontal"
- android:duplicateParentState="true">
+ android:alpha="0.5">
<TextView
android:id="@+id/page_number"
@@ -52,8 +54,7 @@
android:layout_marginRight="8dip"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
- android:background="@drawable/page_selector_background"
- android:duplicateParentState="true">
+ android:src="@drawable/ic_remove_circle">
</ImageView>
</RelativeLayout>
diff --git a/packages/PrintSpooler/res/layout/preview_page_selected.xml b/packages/PrintSpooler/res/layout/preview_page_selected.xml
new file mode 100644
index 0000000..77f4727
--- /dev/null
+++ b/packages/PrintSpooler/res/layout/preview_page_selected.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 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.android.printspooler.widget.PreviewPageFrame xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/preview_page"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_margin="@dimen/preview_page_margin"
+ android:orientation="vertical"
+ android:background="@android:color/white"
+ android:elevation="@dimen/selected_page_elevation" >
+
+ <com.android.printspooler.widget.PageContentView
+ android:id="@+id/page_content"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent">
+ </com.android.printspooler.widget.PageContentView>
+
+ <RelativeLayout
+ android:id="@+id/page_footer"
+ android:layout_width="fill_parent"
+ android:layout_height="@dimen/preview_page_footer_height"
+ android:background="@color/material_grey_500"
+ android:orientation="horizontal">
+
+ <TextView
+ android:id="@+id/page_number"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_centerInParent="true"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:textColor="?android:attr/textColorPrimary">
+ </TextView>
+
+ <ImageView
+ android:id="@+id/page_selector"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginRight="8dip"
+ android:layout_alignParentEnd="true"
+ android:layout_centerVertical="true"
+ android:src="@drawable/ic_check_circle">
+ </ImageView>
+
+ </RelativeLayout>
+
+</com.android.printspooler.widget.PreviewPageFrame>
diff --git a/packages/PrintSpooler/res/values/colors.xml b/packages/PrintSpooler/res/values/colors.xml
index 47e616e..9b4e944 100644
--- a/packages/PrintSpooler/res/values/colors.xml
+++ b/packages/PrintSpooler/res/values/colors.xml
@@ -22,6 +22,8 @@
<color name="print_preview_background_color">#F2F1F2</color>
+ <color name="unselected_page_background_color">#C0C0C0</color>
+
<color name="material_grey_500">#ffa3a3a3</color>
</resources>
diff --git a/packages/PrintSpooler/res/values/constants.xml b/packages/PrintSpooler/res/values/constants.xml
index f6c52d3..54a819f 100644
--- a/packages/PrintSpooler/res/values/constants.xml
+++ b/packages/PrintSpooler/res/values/constants.xml
@@ -39,9 +39,6 @@
<integer name="print_option_column_count">2</integer>
- <fraction name="page_selected_alpha">100%</fraction>
- <fraction name="page_unselected_alpha">50%</fraction>
-
<dimen name="preview_page_footer_height">32dip</dimen>
<dimen name="preview_page_min_width">128dip</dimen>
diff --git a/packages/PrintSpooler/src/com/android/printspooler/ui/PageAdapter.java b/packages/PrintSpooler/src/com/android/printspooler/ui/PageAdapter.java
index c1a3f86..54400b3 100644
--- a/packages/PrintSpooler/src/com/android/printspooler/ui/PageAdapter.java
+++ b/packages/PrintSpooler/src/com/android/printspooler/ui/PageAdapter.java
@@ -297,7 +297,14 @@
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- View page = mLayoutInflater.inflate(R.layout.preview_page, parent, false);
+ View page;
+
+ if (viewType == 0) {
+ page = mLayoutInflater.inflate(R.layout.preview_page_selected, parent, false);
+ } else {
+ page = mLayoutInflater.inflate(R.layout.preview_page, parent, false);
+ }
+
return new MyViewHolder(page);
}
@@ -345,9 +352,9 @@
content.init(provider, mEmptyState, mErrorState, mMediaSize, mMinMargins);
if (mConfirmedPagesInDocument.indexOfKey(pageInDocument) >= 0) {
- page.setSelected(true, false);
+ page.setSelected(true);
} else {
- page.setSelected(false, false);
+ page.setSelected(false);
}
page.setContentDescription(mContext.getString(R.string.page_description_template,
@@ -365,6 +372,15 @@
}
@Override
+ public int getItemViewType(int position) {
+ if (mConfirmedPagesInDocument.indexOfKey(computePageIndexInDocument(position)) >= 0) {
+ return 0;
+ } else {
+ return 1;
+ }
+ }
+
+ @Override
public long getItemId(int position) {
return computePageIndexInDocument(position);
}
@@ -821,14 +837,14 @@
final int pageInDocument = computePageIndexInDocument(pageInAdapter);
if (mConfirmedPagesInDocument.indexOfKey(pageInDocument) < 0) {
mConfirmedPagesInDocument.put(pageInDocument, null);
- page.setSelected(true, true);
} else {
if (mConfirmedPagesInDocument.size() <= 1) {
return;
}
mConfirmedPagesInDocument.remove(pageInDocument);
- page.setSelected(false, true);
}
+
+ notifyItemChanged(pageInAdapter);
}
}
}
diff --git a/packages/PrintSpooler/src/com/android/printspooler/widget/PreviewPageFrame.java b/packages/PrintSpooler/src/com/android/printspooler/widget/PreviewPageFrame.java
index 6a6f1d39..95bdb09 100644
--- a/packages/PrintSpooler/src/com/android/printspooler/widget/PreviewPageFrame.java
+++ b/packages/PrintSpooler/src/com/android/printspooler/widget/PreviewPageFrame.java
@@ -22,29 +22,14 @@
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.CompoundButton;
import android.widget.LinearLayout;
-import com.android.printspooler.R;
/**
* This class represents the frame of page in the print preview list
* that contains the page and a footer.
*/
public final class PreviewPageFrame extends LinearLayout {
- private final float mSelectedElevation;
- private final float mNotSelectedElevation;
-
- private final float mSelectedPageAlpha;
- private final float mNotSelectedAlpha;
-
public PreviewPageFrame(Context context, AttributeSet attrs) {
super(context, attrs);
- mSelectedElevation = mContext.getResources().getDimension(
- R.dimen.selected_page_elevation);
- mNotSelectedElevation = mContext.getResources().getDimension(
- R.dimen.unselected_page_elevation);
- mSelectedPageAlpha = mContext.getResources().getFraction(
- R.fraction.page_selected_alpha, 1, 1);
- mNotSelectedAlpha = mContext.getResources().getFraction(
- R.fraction.page_unselected_alpha, 1, 1);
}
@Override
@@ -65,28 +50,4 @@
info.setCheckable(true);
info.setChecked(isSelected());
}
-
- public void setSelected(boolean selected, boolean animate) {
- if (isSelected() == selected) {
- return;
- }
- setSelected(selected);
- if (selected) {
- if (animate) {
- animate().translationZ(mSelectedElevation)
- .alpha(mSelectedPageAlpha);
- } else {
- setTranslationZ(mSelectedElevation);
- setAlpha(mSelectedPageAlpha);
- }
- } else {
- if (animate) {
- animate().translationZ(mNotSelectedElevation)
- .alpha(mNotSelectedAlpha);
- } else {
- setTranslationZ(mNotSelectedElevation);
- setAlpha(mNotSelectedAlpha);
- }
- }
- }
}