Provide animation when auto-scaling the font-size

Bug: 15287699
Change-Id: I5e7c5c3bdc96200efa6b4c6f221148647ff91e76
diff --git a/src/com/android/calculator2/CalculatorEditText.java b/src/com/android/calculator2/CalculatorEditText.java
index e31d571..63a5ae5 100644
--- a/src/com/android/calculator2/CalculatorEditText.java
+++ b/src/com/android/calculator2/CalculatorEditText.java
@@ -30,6 +30,7 @@
 import android.view.MenuItem;
 import android.view.MotionEvent;
 import android.widget.EditText;
+import android.widget.TextView;
 
 public class CalculatorEditText extends EditText {
 
@@ -60,6 +61,7 @@
     private final float mStepTextSize;
 
     private int mWidthConstraint = -1;
+    private OnTextSizeChangeListener mOnTextSizeChangeListener;
 
     public CalculatorEditText(Context context) {
         this(context, null);
@@ -126,6 +128,20 @@
         setTextSize(TypedValue.COMPLEX_UNIT_PX, getVariableTextSize(text.toString()));
     }
 
+    @Override
+    public void setTextSize(int unit, float size) {
+        final float oldTextSize = getTextSize();
+        super.setTextSize(unit, size);
+
+        if (mOnTextSizeChangeListener != null && getTextSize() != oldTextSize) {
+            mOnTextSizeChangeListener.onTextSizeChanged(this, oldTextSize);
+        }
+    }
+
+    public void setOnTextSizeChangeListener(OnTextSizeChangeListener listener) {
+        mOnTextSizeChangeListener = listener;
+    }
+
     public float getVariableTextSize(String text) {
         if (mWidthConstraint < 0 || mMaximumTextSize <= mMinimumTextSize) {
             // Not measured, bail early.
@@ -167,4 +183,8 @@
         final FontMetricsInt fontMetrics = getPaint().getFontMetricsInt();
         return super.getCompoundPaddingBottom() - Math.min(getPaddingBottom(), fontMetrics.descent);
     }
+
+    public interface OnTextSizeChangeListener {
+        void onTextSizeChanged(TextView textView, float oldSize);
+    }
 }