diff options
author | Annie Chin <afchin@google.com> | 2017-01-04 12:21:52 -0800 |
---|---|---|
committer | Annie Chin <afchin@google.com> | 2017-01-05 14:57:32 -0800 |
commit | 8861323dcc360b12de1c369fcb84e88d634cfcb7 (patch) | |
tree | 6c6d80b9cbd5898b212612f738699e277b37f29c | |
parent | c3a0b31c6fc6637b4390b2f9c119c19a8acfeb00 (diff) | |
download | android_packages_apps_ExactCalculator-8861323dcc360b12de1c369fcb84e88d634cfcb7.tar.gz android_packages_apps_ExactCalculator-8861323dcc360b12de1c369fcb84e88d634cfcb7.tar.bz2 android_packages_apps_ExactCalculator-8861323dcc360b12de1c369fcb84e88d634cfcb7.zip |
Polish History multiwindow support.
Fixes: 34081054
Fixes: 34081005
Fixes: 32987283
-Hide quick result from current expression when we are in one-line
display mode.
-Adjust bottom padding for history item in one-line mode.
-Add font padding when bottom padding for items is 0 to prevent running
into the bottom edge of the display.
Change-Id: Icf3ddd4951ac0e4ab680124ecff7dd5258ccc05f
-rw-r--r-- | res/values-w230dp-h220dp/dimens.xml | 4 | ||||
-rw-r--r-- | res/values-w230dp-h275dp/dimens.xml | 4 | ||||
-rw-r--r-- | res/values-w375dp-h220dp/dimens.xml | 4 | ||||
-rw-r--r-- | res/values-w375dp-h275dp/dimens.xml | 4 | ||||
-rw-r--r-- | res/values-w520dp-h220dp-land/dimens.xml | 4 | ||||
-rw-r--r-- | src/com/android/calculator2/Calculator.java | 12 | ||||
-rw-r--r-- | src/com/android/calculator2/DragController.java | 30 | ||||
-rw-r--r-- | src/com/android/calculator2/HistoryAdapter.java | 6 | ||||
-rw-r--r-- | src/com/android/calculator2/HistoryFragment.java | 12 |
9 files changed, 51 insertions, 29 deletions
diff --git a/res/values-w230dp-h220dp/dimens.xml b/res/values-w230dp-h220dp/dimens.xml index e0fde7f..10a6c21 100644 --- a/res/values-w230dp-h220dp/dimens.xml +++ b/res/values-w230dp-h220dp/dimens.xml @@ -18,7 +18,7 @@ <resources> <!-- Dimens for display formula. --> <dimen name="formula_padding_top">0dip</dimen> - <dimen name="formula_padding_bottom">0dip</dimen> + <dimen name="formula_padding_bottom">8dip</dimen> <dimen name="formula_padding_start">16dip</dimen> <dimen name="formula_padding_end">16dip</dimen> <dimen name="formula_min_textsize">28dip</dimen> @@ -27,7 +27,7 @@ <!-- Dimens for display result. --> <dimen name="result_padding_top">0dip</dimen> - <dimen name="result_padding_bottom">0dip</dimen> + <dimen name="result_padding_bottom">8dip</dimen> <dimen name="result_padding_start">16dip</dimen> <dimen name="result_padding_end">16dip</dimen> <dimen name="result_textsize">28dip</dimen> diff --git a/res/values-w230dp-h275dp/dimens.xml b/res/values-w230dp-h275dp/dimens.xml index d969266..7f8bf5e 100644 --- a/res/values-w230dp-h275dp/dimens.xml +++ b/res/values-w230dp-h275dp/dimens.xml @@ -18,7 +18,7 @@ <resources> <!-- Dimens for display formula. --> <dimen name="formula_padding_top">0dip</dimen> - <dimen name="formula_padding_bottom">0dip</dimen> + <dimen name="formula_padding_bottom">8dip</dimen> <dimen name="formula_padding_start">16dip</dimen> <dimen name="formula_padding_end">16dip</dimen> <dimen name="formula_min_textsize">28dip</dimen> @@ -27,7 +27,7 @@ <!-- Dimens for display result. --> <dimen name="result_padding_top">0dip</dimen> - <dimen name="result_padding_bottom">0dip</dimen> + <dimen name="result_padding_bottom">8dip</dimen> <dimen name="result_padding_start">16dip</dimen> <dimen name="result_padding_end">16dip</dimen> <dimen name="result_textsize">28dip</dimen> diff --git a/res/values-w375dp-h220dp/dimens.xml b/res/values-w375dp-h220dp/dimens.xml index e0fde7f..10a6c21 100644 --- a/res/values-w375dp-h220dp/dimens.xml +++ b/res/values-w375dp-h220dp/dimens.xml @@ -18,7 +18,7 @@ <resources> <!-- Dimens for display formula. --> <dimen name="formula_padding_top">0dip</dimen> - <dimen name="formula_padding_bottom">0dip</dimen> + <dimen name="formula_padding_bottom">8dip</dimen> <dimen name="formula_padding_start">16dip</dimen> <dimen name="formula_padding_end">16dip</dimen> <dimen name="formula_min_textsize">28dip</dimen> @@ -27,7 +27,7 @@ <!-- Dimens for display result. --> <dimen name="result_padding_top">0dip</dimen> - <dimen name="result_padding_bottom">0dip</dimen> + <dimen name="result_padding_bottom">8dip</dimen> <dimen name="result_padding_start">16dip</dimen> <dimen name="result_padding_end">16dip</dimen> <dimen name="result_textsize">28dip</dimen> diff --git a/res/values-w375dp-h275dp/dimens.xml b/res/values-w375dp-h275dp/dimens.xml index e0fde7f..10a6c21 100644 --- a/res/values-w375dp-h275dp/dimens.xml +++ b/res/values-w375dp-h275dp/dimens.xml @@ -18,7 +18,7 @@ <resources> <!-- Dimens for display formula. --> <dimen name="formula_padding_top">0dip</dimen> - <dimen name="formula_padding_bottom">0dip</dimen> + <dimen name="formula_padding_bottom">8dip</dimen> <dimen name="formula_padding_start">16dip</dimen> <dimen name="formula_padding_end">16dip</dimen> <dimen name="formula_min_textsize">28dip</dimen> @@ -27,7 +27,7 @@ <!-- Dimens for display result. --> <dimen name="result_padding_top">0dip</dimen> - <dimen name="result_padding_bottom">0dip</dimen> + <dimen name="result_padding_bottom">8dip</dimen> <dimen name="result_padding_start">16dip</dimen> <dimen name="result_padding_end">16dip</dimen> <dimen name="result_textsize">28dip</dimen> diff --git a/res/values-w520dp-h220dp-land/dimens.xml b/res/values-w520dp-h220dp-land/dimens.xml index b1ef149..0ae75b5 100644 --- a/res/values-w520dp-h220dp-land/dimens.xml +++ b/res/values-w520dp-h220dp-land/dimens.xml @@ -18,7 +18,7 @@ <resources> <!-- Dimens for display formula. --> <dimen name="formula_padding_top">0dip</dimen> - <dimen name="formula_padding_bottom">0dip</dimen> + <dimen name="formula_padding_bottom">8dip</dimen> <dimen name="formula_padding_start">36dip</dimen> <dimen name="formula_padding_end">36dip</dimen> <dimen name="formula_min_textsize">28dip</dimen> @@ -27,7 +27,7 @@ <!-- Dimens for display result. --> <dimen name="result_padding_top">0dip</dimen> - <dimen name="result_padding_bottom">0dip</dimen> + <dimen name="result_padding_bottom">8dip</dimen> <dimen name="result_padding_start">36dip</dimen> <dimen name="result_padding_end">36dip</dimen> <dimen name="result_textsize">28dip</dimen> diff --git a/src/com/android/calculator2/Calculator.java b/src/com/android/calculator2/Calculator.java index c149e84..705225b 100644 --- a/src/com/android/calculator2/Calculator.java +++ b/src/com/android/calculator2/Calculator.java @@ -297,7 +297,7 @@ public class Calculator extends Activity private ForegroundColorSpan mUnprocessedColorSpan = new ForegroundColorSpan(Color.RED); // Whether the display is one line. - private boolean mOneLine; + private boolean mIsOneLine; private HistoryFragment mHistoryFragment = new HistoryFragment(); @@ -415,7 +415,7 @@ public class Calculator extends Activity mInverseToggle = (TextView) findViewById(R.id.toggle_inv); mModeToggle = (TextView) findViewById(R.id.toggle_mode); - mOneLine = mResultText.getVisibility() == View.INVISIBLE; + mIsOneLine = mResultText.getVisibility() == View.INVISIBLE; mInvertibleButtons = new View[] { findViewById(R.id.fun_sin), @@ -519,7 +519,7 @@ public class Calculator extends Activity mClearButton.setVisibility(View.GONE); } - if (mOneLine) { + if (mIsOneLine) { if (mCurrentState == CalculatorState.RESULT || mCurrentState == CalculatorState.EVALUATE || mCurrentState == CalculatorState.ANIMATE) { @@ -562,6 +562,10 @@ public class Calculator extends Activity || mCurrentState == CalculatorState.RESULT; } + public boolean isOneLine() { + return mIsOneLine; + } + @Override protected void onDestroy() { mDragLayout.removeDragCallback(mDragCallback); @@ -1179,7 +1183,7 @@ public class Calculator extends Activity final float resultTranslationY = (mFormulaContainer.getBottom() - mResultText.getBottom()) - (mFormulaText.getPaddingBottom() - mResultText.getPaddingBottom()); float formulaTranslationY = -mFormulaContainer.getBottom(); - if (mOneLine) { + if (mIsOneLine) { // Position the result text. mResultText.setY(mResultText.getBottom()); formulaTranslationY = -(findViewById(R.id.toolbar).getBottom() diff --git a/src/com/android/calculator2/DragController.java b/src/com/android/calculator2/DragController.java index 7642a64..e90d1b4 100644 --- a/src/com/android/calculator2/DragController.java +++ b/src/com/android/calculator2/DragController.java @@ -56,6 +56,8 @@ public final class DragController { private boolean mAnimationInitialized; + private boolean mOneLine; + private AnimationController mAnimationController; private Evaluator mEvaluator; @@ -64,7 +66,8 @@ public final class DragController { mEvaluator = evaluator; } - public void initializeController(boolean isResult) { + public void initializeController(boolean isResult, boolean oneLine) { + mOneLine = oneLine; if (EvaluatorStateUtils.isDisplayEmpty(mEvaluator)) { // Empty display mAnimationController = new EmptyAnimationController(); @@ -179,10 +182,11 @@ public final class DragController { * Reset all initialized values. * If the DragLayout is closed, set recyclerview to INVISIBLE to avoid flickering. */ - public void initializeAnimation(RecyclerView recyclerView, boolean isResult, boolean isOpen) { + public void initializeAnimation(RecyclerView recyclerView, boolean isResult, + boolean oneLine, boolean isOpen) { recyclerView.setVisibility(isOpen ? View.VISIBLE : View.INVISIBLE); mAnimationInitialized = false; - initializeController(isResult); + initializeController(isResult, oneLine); } public interface AnimateTextInterface { @@ -246,13 +250,19 @@ public final class DragController { public void initializeFormulaTranslationY(AlignedTextView formula, CalculatorResult result) { - // Baseline of formula moves by the difference in formula bottom padding and the - // difference in result height. - mFormulaTranslationY = - mDisplayFormula.getPaddingBottom() - formula.getPaddingBottom() - + mDisplayResult.getHeight() - result.getHeight() - - mBottomPaddingHeight; - + if (mOneLine) { + // Disregard result since we set it to GONE in the one-line case. + mFormulaTranslationY = + mDisplayFormula.getPaddingBottom() - formula.getPaddingBottom() + - mBottomPaddingHeight; + } else { + // Baseline of formula moves by the difference in formula bottom padding and the + // difference in result height. + mFormulaTranslationY = + mDisplayFormula.getPaddingBottom() - formula.getPaddingBottom() + + mDisplayResult.getHeight() - result.getHeight() + - mBottomPaddingHeight; + } } public void initializeFormulaTranslationX(AlignedTextView formula) { diff --git a/src/com/android/calculator2/HistoryAdapter.java b/src/com/android/calculator2/HistoryAdapter.java index 0e7ff34..fe2f2c0 100644 --- a/src/com/android/calculator2/HistoryAdapter.java +++ b/src/com/android/calculator2/HistoryAdapter.java @@ -43,6 +43,7 @@ public class HistoryAdapter extends RecyclerView.Adapter<HistoryAdapter.ViewHold private List<HistoryItem> mDataSet; private boolean mIsResultLayout; + private boolean mIsOneLine; public HistoryAdapter(ArrayList<HistoryItem> dataSet) { mDataSet = dataSet; @@ -75,6 +76,7 @@ public class HistoryAdapter extends RecyclerView.Adapter<HistoryAdapter.ViewHold holder.mResult.setEvaluator(mEvaluator, item.getEvaluatorIndex()); if (item.getEvaluatorIndex() == Evaluator.HISTORY_MAIN_INDEX) { holder.mDate.setText(R.string.title_current_expression); + holder.mResult.setVisibility(mIsOneLine ? View.GONE : View.VISIBLE); } else { // If the previous item occurred on the same date, the current item does not need // a date header. @@ -129,6 +131,10 @@ public class HistoryAdapter extends RecyclerView.Adapter<HistoryAdapter.ViewHold mIsResultLayout = isResult; } + public void setIsOneLine(boolean isOneLine) { + mIsOneLine = isOneLine; + } + public void setEvaluator(Evaluator evaluator) { mEvaluator = evaluator; } diff --git a/src/com/android/calculator2/HistoryFragment.java b/src/com/android/calculator2/HistoryFragment.java index 86ab138..af06dfa 100644 --- a/src/com/android/calculator2/HistoryFragment.java +++ b/src/com/android/calculator2/HistoryFragment.java @@ -141,6 +141,7 @@ public class HistoryFragment extends Fragment { mAdapter.setEvaluator(Evaluator.getInstance(activity)); final boolean isResultLayout = activity.isResultLayout(); + final boolean isOneLine = activity.isOneLine(); mDragLayout = (DragLayout) activity.findViewById(R.id.drag_layout); mDragLayout.removeDragCallback(mDragCallback); @@ -149,7 +150,7 @@ public class HistoryFragment extends Fragment { mEvaluator = Evaluator.getInstance(activity); if (mEvaluator != null) { - initializeController(isResultLayout); + initializeController(isResultLayout, isOneLine); final long maxIndex = mEvaluator.getMaxIndex(); @@ -178,6 +179,7 @@ public class HistoryFragment extends Fragment { mDataSet = newDataSet; mAdapter.setDataSet(mDataSet); mAdapter.setIsResultLayout(isResultLayout); + mAdapter.setIsOneLine(activity.isOneLine()); } mAdapter.notifyDataSetChanged(); @@ -186,10 +188,10 @@ public class HistoryFragment extends Fragment { @Override public void onStart() { super.onStart(); - + final Calculator activity = (Calculator) getActivity(); // The orientation may have changed. mDragController.initializeAnimation(mRecyclerView, - ((Calculator) getActivity()).isResultLayout(), mDragLayout.isOpen()); + activity.isResultLayout(), activity.isOneLine(), mDragLayout.isOpen()); } @Override @@ -221,7 +223,7 @@ public class HistoryFragment extends Fragment { super.onDestroyView(); } - private void initializeController(boolean isResult) { + private void initializeController(boolean isResult, boolean isOneLine) { mDragController.setDisplayFormula( (CalculatorFormula) getActivity().findViewById(R.id.formula)); @@ -232,7 +234,7 @@ public class HistoryFragment extends Fragment { mDragController.setEvaluator(mEvaluator); - mDragController.initializeController(isResult); + mDragController.initializeController(isResult, isOneLine); } public boolean stopActionModeOrContextMenu() { |