From 13b8948c0cc543f62a68fa32c4692ba16a2e93c6 Mon Sep 17 00:00:00 2001 From: Sai Cheemalapati Date: Thu, 19 Jun 2014 12:33:34 -0700 Subject: Update Emergency Dialer to match Dialer (5/7). Emergency dialer style updated to match style in Dialer and InCallUI. Moved all dialpad resources to PhoneCommon. Change-Id: Ia3b937c12fc133a04c10ba842df9e89012ba331d --- .../android/phone/common/animation/AnimUtils.java | 108 +++++++++ .../common/animation/AnimationListenerAdapter.java | 48 ++++ .../phone/common/dialpad/DialpadKeyButton.java | 229 ++++++++++++++++++ .../phone/common/dialpad/DialpadTextView.java | 72 ++++++ .../android/phone/common/dialpad/DialpadView.java | 259 +++++++++++++++++++++ .../phone/common/dialpad/DigitsEditText.java | 94 ++++++++ src/com/android/phone/common/util/ViewUtil.java | 97 ++++++++ 7 files changed, 907 insertions(+) create mode 100644 src/com/android/phone/common/animation/AnimUtils.java create mode 100644 src/com/android/phone/common/animation/AnimationListenerAdapter.java create mode 100644 src/com/android/phone/common/dialpad/DialpadKeyButton.java create mode 100644 src/com/android/phone/common/dialpad/DialpadTextView.java create mode 100644 src/com/android/phone/common/dialpad/DialpadView.java create mode 100644 src/com/android/phone/common/dialpad/DigitsEditText.java create mode 100644 src/com/android/phone/common/util/ViewUtil.java (limited to 'src/com/android') diff --git a/src/com/android/phone/common/animation/AnimUtils.java b/src/com/android/phone/common/animation/AnimUtils.java new file mode 100644 index 0000000..35ac107 --- /dev/null +++ b/src/com/android/phone/common/animation/AnimUtils.java @@ -0,0 +1,108 @@ +/* + * 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 + */ + +package com.android.phone.common.animation; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.view.View; +import android.view.ViewPropertyAnimator; +import android.view.animation.Interpolator; +import android.view.animation.PathInterpolator; + +public class AnimUtils { + public static final int DEFAULT_DURATION = -1; + public static final Interpolator EASE_IN = new PathInterpolator(0.0f, 0.0f, 0.2f, 1.0f); + public static final Interpolator EASE_OUT = new PathInterpolator(0.4f, 0.0f, 1.0f, 1.0f); + public static final Interpolator EASE_OUT_EASE_IN = new PathInterpolator(0.4f, 0, 0.2f, 1); + + public static class AnimationCallback { + public void onAnimationEnd() {} + public void onAnimationCancel() {} + } + + public static void crossFadeViews(View fadeIn, View fadeOut, int duration) { + fadeIn(fadeIn, duration); + fadeOut(fadeOut, duration); + } + + public static void fadeOut(View fadeOut, int duration) { + fadeOut(fadeOut, duration, null); + } + + public static void fadeOut(final View fadeOut, int duration, final AnimationCallback callback) { + fadeOut.setAlpha(1); + final ViewPropertyAnimator animator = fadeOut.animate(); + animator.cancel(); + animator.alpha(0).withLayer().setListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + fadeOut.setVisibility(View.GONE); + if (callback != null) { + callback.onAnimationEnd(); + } + } + + @Override + public void onAnimationCancel(Animator animation) { + fadeOut.setVisibility(View.GONE); + fadeOut.setAlpha(0); + if (callback != null) { + callback.onAnimationCancel(); + } + } + }); + if (duration != DEFAULT_DURATION) { + animator.setDuration(duration); + } + animator.start(); + } + + public static void fadeIn(View fadeIn, int duration) { + fadeIn(fadeIn, duration, null); + } + + public static void fadeIn(final View fadeIn, int duration, final AnimationCallback callback) { + fadeIn.setAlpha(0); + final ViewPropertyAnimator animator = fadeIn.animate(); + animator.cancel(); + animator.alpha(1).withLayer().setListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationStart(Animator animation) { + fadeIn.setVisibility(View.VISIBLE); + } + + @Override + public void onAnimationCancel(Animator animation) { + fadeIn.setAlpha(1); + if (callback != null) { + callback.onAnimationCancel(); + } + } + + @Override + public void onAnimationEnd(Animator animation) { + if (callback != null) { + callback.onAnimationEnd(); + } + } + }); + if (duration != DEFAULT_DURATION) { + animator.setDuration(duration); + } + animator.start(); + } +} diff --git a/src/com/android/phone/common/animation/AnimationListenerAdapter.java b/src/com/android/phone/common/animation/AnimationListenerAdapter.java new file mode 100644 index 0000000..d8f3fa6 --- /dev/null +++ b/src/com/android/phone/common/animation/AnimationListenerAdapter.java @@ -0,0 +1,48 @@ +/* + * 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 + */ + +package com.android.phone.common.animation; + +import android.view.animation.Animation; +import android.view.animation.Animation.AnimationListener; + +/** + * Provides empty implementations of the methods in {@link AnimationListener} + * for convenience reasons. + */ +public class AnimationListenerAdapter implements AnimationListener { + + /** + * {@inheritDoc} + */ + @Override + public void onAnimationStart(Animation animation) { + } + + /** + * {@inheritDoc} + */ + @Override + public void onAnimationEnd(Animation animation) { + } + + /** + * {@inheritDoc} + */ + @Override + public void onAnimationRepeat(Animation animation) { + } +} diff --git a/src/com/android/phone/common/dialpad/DialpadKeyButton.java b/src/com/android/phone/common/dialpad/DialpadKeyButton.java new file mode 100644 index 0000000..4e3781c --- /dev/null +++ b/src/com/android/phone/common/dialpad/DialpadKeyButton.java @@ -0,0 +1,229 @@ +/* + * Copyright (C) 2012 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. + */ + +package com.android.phone.common.dialpad; + +import android.content.Context; +import android.graphics.Rect; +import android.os.Bundle; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewConfiguration; +import android.view.accessibility.AccessibilityEvent; +import android.view.accessibility.AccessibilityManager; +import android.view.accessibility.AccessibilityNodeInfo; +import android.widget.FrameLayout; + +/** + * Custom class for dialpad buttons. + *

+ * When touch exploration mode is enabled for accessibility, this class + * implements the lift-to-type interaction model: + *