From 695c7fa7a320f1e5b4b56aa7ed6a64c6220f6502 Mon Sep 17 00:00:00 2001 From: Svetoslav Ganov Date: Wed, 7 Aug 2013 19:29:42 -0700 Subject: [PATCH] Print UI polish based on UX feedback. 1. Refreshed the print UI based on UX redlines. 2. Implemented tap outside cancel for the print job config activity which is full-screen but pretends to be a dialog. Change-Id: I5afc7cd40c696109d70af31536898cfcad91b2ab --- .../layout/print_job_config_activity_container.xml | 2 +- .../print_job_config_activity_content_editing.xml | 156 +++++++-------------- ...rint_job_config_activity_content_generating.xml | 65 ++++++--- .../res/layout/spinner_dropdown_item.xml | 13 +- packages/PrintSpooler/res/values/colors.xml | 8 +- packages/PrintSpooler/res/values/strings.xml | 5 +- packages/PrintSpooler/res/values/styles.xml | 33 +++++ .../printspooler/PrintJobConfigActivity.java | 98 +++++++------ 8 files changed, 198 insertions(+), 182 deletions(-) create mode 100644 packages/PrintSpooler/res/values/styles.xml diff --git a/packages/PrintSpooler/res/layout/print_job_config_activity_container.xml b/packages/PrintSpooler/res/layout/print_job_config_activity_container.xml index e36b8b512d44..a0c111b3aa53 100644 --- a/packages/PrintSpooler/res/layout/print_job_config_activity_container.xml +++ b/packages/PrintSpooler/res/layout/print_job_config_activity_container.xml @@ -19,7 +19,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" - android:background="@color/print_job_config_activity_content_background"> + android:background="@color/container_background"> diff --git a/packages/PrintSpooler/res/layout/print_job_config_activity_content_editing.xml b/packages/PrintSpooler/res/layout/print_job_config_activity_content_editing.xml index 77ef5a2e2327..84c41de03921 100644 --- a/packages/PrintSpooler/res/layout/print_job_config_activity_content_editing.xml +++ b/packages/PrintSpooler/res/layout/print_job_config_activity_content_editing.xml @@ -18,19 +18,22 @@ android:id="@+id/content_editing" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:orientation="vertical" - android:divider="?android:attr/dividerHorizontal" - android:showDividers="middle"> + android:orientation="vertical"> + android:scrollbars="vertical" + android:background="@color/editable_background"> @@ -41,14 +44,10 @@ android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="fill_horizontal" - android:layout_marginLeft="32dip" - android:layout_marginTop="32dip" - android:layout_marginRight="32dip" - android:layout_marginBottom="12dip" android:layout_row="0" android:layout_column="0" android:layout_columnSpan="2" - android:minHeight="?android:attr/listPreferredItemHeight"> + android:minHeight="?android:attr/listPreferredItemHeightSmall"> @@ -58,31 +57,28 @@ android:id="@+id/copies_edittext" android:layout_width="fill_parent" android:layout_height="wrap_content" - android:layout_marginLeft="32dip" - android:layout_marginRight="12dip" - android:layout_marginBottom="12dip" + android:layout_marginEnd="6dip" android:layout_row="2" android:layout_column="0" android:layout_gravity="bottom" android:inputType="numberDecimal" android:selectAllOnFocus="true" android:minWidth="150dip" - android:minHeight="?android:attr/listPreferredItemHeight"> + android:minHeight="?android:attr/listPreferredItemHeightSmall"> + android:textAppearance="@style/PrintOptionTitleTextAppearance"> @@ -91,27 +87,22 @@ android:id="@+id/paper_size_spinner" android:layout_width="fill_parent" android:layout_height="wrap_content" - android:layout_marginLeft="12dip" - android:layout_marginRight="32dip" - android:layout_marginBottom="12dip" + android:layout_marginStart="6dip" android:layout_row="2" android:layout_column="1" - android:minWidth="150dip" - android:minHeight="?android:attr/listPreferredItemHeight"> + style="@style/PrintOptionSpinnerStyle"> + android:textAppearance="@style/PrintOptionTitleTextAppearance"> @@ -120,27 +111,23 @@ android:id="@+id/color_spinner" android:layout_width="fill_parent" android:layout_height="wrap_content" - android:layout_marginLeft="32dip" - android:layout_marginRight="12dip" - android:layout_marginBottom="12dip" + android:layout_marginEnd="6dip" android:layout_row="4" android:layout_column="0" - android:minWidth="150dip" - android:minHeight="?android:attr/listPreferredItemHeight"> + style="@style/PrintOptionSpinnerStyle"> + android:textAppearance="@style/PrintOptionTitleTextAppearance"> @@ -149,27 +136,22 @@ android:id="@+id/orientation_spinner" android:layout_width="fill_parent" android:layout_height="wrap_content" - android:layout_marginLeft="12dip" - android:layout_marginRight="32dip" - android:layout_marginBottom="12dip" + android:layout_marginStart="6dip" android:layout_row="4" android:layout_column="1" - android:minWidth="150dip" - android:minHeight="?android:attr/listPreferredItemHeight"> + style="@style/PrintOptionSpinnerStyle"> + android:textAppearance="@style/PrintOptionTitleTextAppearance"> @@ -178,12 +160,10 @@ android:id="@+id/range_options_spinner" android:layout_width="fill_parent" android:layout_height="wrap_content" - android:layout_marginLeft="32dip" - android:layout_marginRight="12dip" + android:layout_marginEnd="6dip" android:layout_row="6" android:layout_column="0" - android:minWidth="150dip" - android:minHeight="?android:attr/listPreferredItemHeight"> + style="@style/PrintOptionSpinnerStyle"> + android:minHeight="?android:attr/listPreferredItemHeightSmall"> + android:textAppearance="@style/PrintOptionTitleTextAppearance"> - - - - - - - - - - + + + diff --git a/packages/PrintSpooler/res/layout/print_job_config_activity_content_generating.xml b/packages/PrintSpooler/res/layout/print_job_config_activity_content_generating.xml index 6352afce81ca..8bdb6c9566f1 100644 --- a/packages/PrintSpooler/res/layout/print_job_config_activity_content_generating.xml +++ b/packages/PrintSpooler/res/layout/print_job_config_activity_content_generating.xml @@ -18,35 +18,56 @@ android:id="@+id/content_generating" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:orientation="vertical" - android:divider="?android:attr/dividerHorizontal" - android:showDividers="middle"> + android:orientation="vertical"> - - - - - + + + + + + + + + + + + diff --git a/packages/PrintSpooler/res/layout/spinner_dropdown_item.xml b/packages/PrintSpooler/res/layout/spinner_dropdown_item.xml index 66c67244b0ef..002cc1458345 100644 --- a/packages/PrintSpooler/res/layout/spinner_dropdown_item.xml +++ b/packages/PrintSpooler/res/layout/spinner_dropdown_item.xml @@ -17,11 +17,11 @@ + android:gravity="left|center_vertical"> + android:textIsSelectable="false" + android:gravity="top|left" + android:textColor="@color/important_text"> + android:visibility="gone" + android:textColor="@color/important_text"> diff --git a/packages/PrintSpooler/res/values/colors.xml b/packages/PrintSpooler/res/values/colors.xml index 3d8ba223944c..9972c9600583 100644 --- a/packages/PrintSpooler/res/values/colors.xml +++ b/packages/PrintSpooler/res/values/colors.xml @@ -15,5 +15,11 @@ --> - #FFF2F2F2 + + #FFFFFF + #333333 + #888888 + #CCCCCC + #F2F2F2 + \ No newline at end of file diff --git a/packages/PrintSpooler/res/values/strings.xml b/packages/PrintSpooler/res/values/strings.xml index 839150956341..2086f58f6c2d 100644 --- a/packages/PrintSpooler/res/values/strings.xml +++ b/packages/PrintSpooler/res/values/strings.xml @@ -20,10 +20,7 @@ Print Spooler - PRINT - - - CANCEL + Print DESTIINATION diff --git a/packages/PrintSpooler/res/values/styles.xml b/packages/PrintSpooler/res/values/styles.xml new file mode 100644 index 000000000000..702adf471416 --- /dev/null +++ b/packages/PrintSpooler/res/values/styles.xml @@ -0,0 +1,33 @@ + + + + + + + + + + diff --git a/packages/PrintSpooler/src/com/android/printspooler/PrintJobConfigActivity.java b/packages/PrintSpooler/src/com/android/printspooler/PrintJobConfigActivity.java index 824815f31214..654bb6d9155c 100644 --- a/packages/PrintSpooler/src/com/android/printspooler/PrintJobConfigActivity.java +++ b/packages/PrintSpooler/src/com/android/printspooler/PrintJobConfigActivity.java @@ -19,7 +19,6 @@ package com.android.printspooler; import android.app.Activity; import android.app.Dialog; import android.content.Context; -import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; @@ -56,6 +55,7 @@ import android.view.MotionEvent; import android.view.View; import android.view.View.MeasureSpec; import android.view.View.OnClickListener; +import android.view.ViewConfiguration; import android.view.ViewGroup; import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; @@ -66,7 +66,6 @@ import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; import android.widget.TextView; -import android.widget.Toast; import java.lang.ref.WeakReference; import java.util.ArrayList; @@ -104,7 +103,7 @@ public class PrintJobConfigActivity extends Activity { private static final int EDITOR_STATE_INITIALIZED = 1; private static final int EDITOR_STATE_CONFIRMED_PRINT = 2; - private static final int EDITOR_STATE_CONFIRMED_PREVIEW = 3; +// private static final int EDITOR_STATE_CONFIRMED_PREVIEW = 3; private static final int EDITOR_STATE_CANCELLED = 4; private static final int MIN_COPIES = 1; @@ -214,7 +213,7 @@ public class PrintJobConfigActivity extends Activity { public boolean onTouchEvent(MotionEvent event) { if (!mEditor.isPrintConfirmed() && !mEditor.isPreviewConfirmed() - && getWindow().shouldCloseOnTouch(this, event)) { + && mEditor.shouldCloseOnTouch(event)) { if (!mController.isWorking()) { PrintJobConfigActivity.this.finish(); } @@ -606,7 +605,7 @@ public class PrintJobConfigActivity extends Activity { private final SimpleStringSplitter mStringCommaSplitter = new SimpleStringSplitter(','); - private final Button mPrintPreviewButton; + private final View mContentContainer; private final Button mPrintButton; @@ -802,6 +801,9 @@ public class PrintJobConfigActivity extends Activity { private boolean mIgnoreNextRangeChange; public Editor() { + // Content container + mContentContainer = findViewById(R.id.content_container); + // Copies mCopiesEditText = (EditText) findViewById(R.id.copies_edittext); mCopiesEditText.setText(String.valueOf(MIN_COPIES)); @@ -864,19 +866,6 @@ public class PrintJobConfigActivity extends Activity { mRangeOptionsSpinner.setSelection(0); } - // Preview button - mPrintPreviewButton = (Button) findViewById(R.id.print_preview_button); - mPrintPreviewButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - mEditor.confirmPreview(); - // TODO: Implement me - Toast.makeText(PrintJobConfigActivity.this, - "Stop poking me! Not implemented yet :)", - Toast.LENGTH_LONG).show(); - } - }); - // Print button mPrintButton = (Button) findViewById(R.id.print_button); mPrintButton.setOnClickListener(new OnClickListener() { @@ -892,6 +881,32 @@ public class PrintJobConfigActivity extends Activity { updateUi(); } + public boolean shouldCloseOnTouch(MotionEvent event) { + if (event.getAction() != MotionEvent.ACTION_DOWN) { + return false; + } + + final int[] locationInWindow = new int[2]; + mContentContainer.getLocationInWindow(locationInWindow); + + final int windowTouchSlop = ViewConfiguration.get(PrintJobConfigActivity.this) + .getScaledWindowTouchSlop(); + final int eventX = (int) event.getX(); + final int eventY = (int) event.getY(); + final int lenientWindowLeft = locationInWindow[0] - windowTouchSlop; + final int lenientWindowRight = lenientWindowLeft + mContentContainer.getWidth() + + windowTouchSlop; + final int lenientWindowTop = locationInWindow[1] - windowTouchSlop; + final int lenientWindowBottom = lenientWindowTop + mContentContainer.getHeight() + + windowTouchSlop; + + if (eventX < lenientWindowLeft || eventX > lenientWindowRight + || eventY < lenientWindowTop || eventY > lenientWindowBottom) { + return true; + } + return false; + } + public boolean isShwoingGeneratingPrintJobUi() { return (findViewById(R.id.content_generating) != null); } @@ -917,7 +932,7 @@ public class PrintJobConfigActivity extends Activity { }); // First animation - fade out the old content. - contentEditing.animate().alpha(0.0f).withEndAction(new Runnable() { + contentEditing.animate().alpha(0.0f).withLayer().withEndAction(new Runnable() { @Override public void run() { contentEditing.setVisibility(View.INVISIBLE); @@ -936,7 +951,7 @@ public class PrintJobConfigActivity extends Activity { / (float) contentContainer.getHeight(); // Second animation - resize the container. - contentContainer.animate().scaleY(scaleY).withEndAction( + contentContainer.animate().scaleY(scaleY).withLayer().withEndAction( new Runnable() { @Override public void run() { @@ -946,7 +961,7 @@ public class PrintJobConfigActivity extends Activity { contentContainer.addView(contentGenerating); // Third animation - show the new content. - contentGenerating.animate().alpha(1.0f); + contentGenerating.animate().withLayer().alpha(1.0f); } }); } @@ -987,9 +1002,9 @@ public class PrintJobConfigActivity extends Activity { return mEditorState == EDITOR_STATE_CONFIRMED_PRINT; } - public void confirmPreview() { - mEditorState = EDITOR_STATE_CONFIRMED_PREVIEW; - } +// public void confirmPreview() { +// mEditorState = EDITOR_STATE_CONFIRMED_PREVIEW; +// } public PageRange[] getRequestedPages() { if (hasErrors()) { @@ -1035,7 +1050,8 @@ public class PrintJobConfigActivity extends Activity { mOrientationSpinner.setEnabled(false); mRangeOptionsSpinner.setEnabled(false); mRangeEditText.setEnabled(false); - mPrintPreviewButton.setEnabled(false); + // TODO: Remove entirely or implement print preview. +// mPrintPreviewButton.setEnabled(false); mPrintButton.setEnabled(false); return; } @@ -1092,9 +1108,9 @@ public class PrintJobConfigActivity extends Activity { mRangeEditText.setEnabled(false); mRangeEditText.setVisibility(View.INVISIBLE); - // Print preview - mPrintPreviewButton.setEnabled(false); - mPrintPreviewButton.setText(getString(R.string.print_preview)); +// // Print preview +// mPrintPreviewButton.setEnabled(false); +// mPrintPreviewButton.setText(getString(R.string.print_preview)); // Print mPrintButton.setEnabled(false); @@ -1291,15 +1307,15 @@ public class PrintJobConfigActivity extends Activity { && (TextUtils.isEmpty(mRangeEditText.getText()) || hasErrors())) || (mRangeOptionsSpinner.getSelectedItemPosition() == 0 && (!mController.hasPerformedLayout() || hasErrors()))) { - mPrintPreviewButton.setEnabled(false); +// mPrintPreviewButton.setEnabled(false); mPrintButton.setEnabled(false); } else { - mPrintPreviewButton.setEnabled(true); - if (hasPdfViewer()) { - mPrintPreviewButton.setText(getString(R.string.print_preview)); - } else { - mPrintPreviewButton.setText(getString(R.string.install_for_print_preview)); - } +// mPrintPreviewButton.setEnabled(true); +// if (hasPdfViewer()) { +// mPrintPreviewButton.setText(getString(R.string.print_preview)); +// } else { +// mPrintPreviewButton.setText(getString(R.string.install_for_print_preview)); +// } mPrintButton.setEnabled(true); } @@ -1412,12 +1428,12 @@ public class PrintJobConfigActivity extends Activity { || mCopiesEditText.getError() != null; } - private boolean hasPdfViewer() { - Intent intent = new Intent(Intent.ACTION_VIEW); - intent.setType("application/pdf"); - return !getPackageManager().queryIntentActivities(intent, - PackageManager.MATCH_DEFAULT_ONLY).isEmpty(); - } +// private boolean hasPdfViewer() { +// Intent intent = new Intent(Intent.ACTION_VIEW); +// intent.setType("application/pdf"); +// return !getPackageManager().queryIntentActivities(intent, +// PackageManager.MATCH_DEFAULT_ONLY).isEmpty(); +// } private final class SpinnerItem { final T value; -- 2.11.0