summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Lee <anwlee@google.com>2014-09-03 18:27:34 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-09-03 18:27:35 +0000
commitd36fa13013a66e435df223602f3975b2892f4589 (patch)
tree710b9e2d9abe61f644768a8b383cf8cddbd288f5 /src
parente09b67d6f87abd8f1252a4e761be57e946c450b1 (diff)
parent405a6e6822fb19a9d14329da92e03e75e2e72703 (diff)
Merge "Use different FAB for dialpad, and use new animations." into lmp-dev
Diffstat (limited to 'src')
-rw-r--r--src/com/android/dialer/DialtactsActivity.java55
-rw-r--r--src/com/android/dialer/dialpad/DialpadFragment.java66
2 files changed, 45 insertions, 76 deletions
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index 6991be6f9..035ec8b38 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -16,9 +16,7 @@
package com.android.dialer;
-import android.animation.LayoutTransition;
import android.app.ActionBar;
-import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.content.ActivityNotFoundException;
@@ -30,7 +28,6 @@ import android.content.res.Configuration;
import android.content.res.Resources;
import android.net.Uri;
import android.os.Bundle;
-import android.os.RemoteException;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Intents;
import android.speech.RecognizerIntent;
@@ -53,7 +50,6 @@ import android.view.View.OnTouchListener;
import android.view.ViewTreeObserver;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
-import android.view.inputmethod.InputMethodManager;
import android.widget.AbsListView.OnScrollListener;
import android.widget.EditText;
import android.widget.FrameLayout;
@@ -103,7 +99,6 @@ import java.util.Locale;
public class DialtactsActivity extends TransactionSafeActivity implements View.OnClickListener,
DialpadFragment.OnDialpadQueryChangedListener,
OnListFragmentScrolledListener,
- DialpadFragment.HostInterface,
ListsFragment.HostInterface,
SpeedDialFragment.HostInterface,
SearchFragment.HostInterface,
@@ -224,9 +219,6 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
private DragDropController mDragDropController;
private ActionBarController mActionBarController;
- private String mDescriptionDialButtonStr;
- private String mActionMenuDialpadButtonStr;
- private ImageButton mFloatingActionButton;
private FloatingActionButtonController mFloatingActionButtonController;
private int mActionBarHeight;
@@ -351,8 +343,6 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
final Resources resources = getResources();
mActionBarHeight = resources.getDimensionPixelSize(R.dimen.action_bar_height_large);
- mDescriptionDialButtonStr = resources.getString(R.string.description_dial_button);
- mActionMenuDialpadButtonStr = resources.getString(R.string.action_menu_dialpad_button);
setContentView(R.layout.dialtacts_activity);
getWindow().setBackgroundDrawable(null);
@@ -389,12 +379,10 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
final View floatingActionButtonContainer = findViewById(
R.id.floating_action_button_container);
- mFloatingActionButton = (ImageButton) findViewById(R.id.floating_action_button);
- int floatingActionButtonWidth = resources.getDimensionPixelSize(
- R.dimen.floating_action_button_width);
- mFloatingActionButton.setOnClickListener(this);
+ ImageButton floatingActionButton = (ImageButton) findViewById(R.id.floating_action_button);
+ floatingActionButton.setOnClickListener(this);
mFloatingActionButtonController = new FloatingActionButtonController(this,
- floatingActionButtonContainer, mFloatingActionButton);
+ floatingActionButtonContainer, floatingActionButton);
ImageButton optionsMenuButton =
(ImageButton) searchEditTextLayout.findViewById(R.id.dialtacts_options_menu_button);
@@ -435,14 +423,13 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
mSlideOut.setAnimationListener(mSlideOutListener);
parentLayout = (FrameLayout) findViewById(R.id.dialtacts_mainlayout);
- parentLayout.getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING);
parentLayout.setOnDragListener(new LayoutOnDragListener());
floatingActionButtonContainer.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
- final ViewTreeObserver observer = floatingActionButtonContainer
- .getViewTreeObserver();
+ final ViewTreeObserver observer =
+ floatingActionButtonContainer.getViewTreeObserver();
if (!observer.isAlive()) {
return;
}
@@ -543,9 +530,6 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
if (!mIsDialpadShown) {
mInCallDialpadUp = false;
showDialpadFragment(true);
- } else {
- // Dial button was pressed; tell the Dialpad fragment
- mDialpadFragment.dialButtonPressed();
}
break;
case R.id.voice_search_button:
@@ -637,6 +621,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
ft.show(mDialpadFragment);
ft.commit();
+ mFloatingActionButtonController.scaleOut();
mActionBarController.onDialpadUp();
if (!isInSearchUi()) {
@@ -648,9 +633,6 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
* Callback from child DialpadFragment when the dialpad is shown.
*/
public void onDialpadShown() {
- mFloatingActionButton.setImageResource(R.drawable.fab_ic_call);
- mFloatingActionButton.setContentDescription(mDescriptionDialButtonStr);
- updateFloatingActionButtonControllerAlignment(mDialpadFragment.getAnimate());
if (mDialpadFragment.getAnimate()) {
mDialpadFragment.getView().startAnimation(mSlideIn);
} else {
@@ -679,8 +661,6 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
mDialpadFragment.setAnimate(animate);
updateSearchFragmentPosition();
- mFloatingActionButton.setImageResource(R.drawable.fab_ic_dial);
- mFloatingActionButton.setContentDescription(mActionMenuDialpadButtonStr);
updateFloatingActionButtonControllerAlignment(animate);
if (animate) {
@@ -705,6 +685,8 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
final FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.hide(mDialpadFragment);
ft.commit();
+
+ mFloatingActionButtonController.scaleIn(AnimUtils.NO_DELAY);
}
private void updateSearchFragmentPosition() {
@@ -1008,11 +990,6 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
// interactions with the ListsFragments.
}
- @Override
- public void setFloatingActionButtonVisible(boolean visible) {
- mFloatingActionButtonController.setVisible(visible);
- }
-
private boolean phoneIsInUse() {
return getTelecommManager().isInCall();
}
@@ -1180,19 +1157,9 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
* @param animate Whether or not to animate the transition.
*/
private void updateFloatingActionButtonControllerAlignment(boolean animate) {
- int align;
- if (mIsDialpadShown) {
- align = mIsLandscape ? FloatingActionButtonController.ALIGN_QUARTER_END
- : FloatingActionButtonController.ALIGN_MIDDLE;
- } else {
- if (!mIsLandscape) {
- align = mCurrentTabPosition == ListsFragment.TAB_INDEX_SPEED_DIAL
- ? FloatingActionButtonController.ALIGN_MIDDLE
- : FloatingActionButtonController.ALIGN_END;
- } else {
- align = FloatingActionButtonController.ALIGN_END;
- }
- }
+ int align = (!mIsLandscape && mCurrentTabPosition == ListsFragment.TAB_INDEX_SPEED_DIAL) ?
+ FloatingActionButtonController.ALIGN_MIDDLE :
+ FloatingActionButtonController.ALIGN_END;
mFloatingActionButtonController.align(align, 0 /* offsetX */, 0 /* offsetY */, animate);
}
}
diff --git a/src/com/android/dialer/dialpad/DialpadFragment.java b/src/com/android/dialer/dialpad/DialpadFragment.java
index 909679191..7e9cc8913 100644
--- a/src/com/android/dialer/dialpad/DialpadFragment.java
+++ b/src/com/android/dialer/dialpad/DialpadFragment.java
@@ -58,16 +58,19 @@ import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.EditText;
+import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.PopupMenu;
+import android.widget.RelativeLayout;
import android.widget.TextView;
import com.android.contacts.common.CallUtil;
import com.android.contacts.common.GeoUtil;
import com.android.contacts.common.util.PhoneNumberFormatter;
import com.android.contacts.common.util.StopWatch;
+import com.android.contacts.common.widget.FloatingActionButtonController;
import com.android.dialer.DialtactsActivity;
import com.android.dialer.NeededForReflection;
import com.android.dialer.R;
@@ -96,34 +99,20 @@ public class DialpadFragment extends AnalyticsFragment
private static final String TAG = DialpadFragment.class.getSimpleName();
/**
- * This interface allows the DialpadFragment to tell its hosting Activity when and when not
- * to display the "dial" button. While this is logically part of the DialpadFragment, the
- * need to have a particular kind of slick animation puts the "dial" button in the parent.
- *
- * The parent calls dialButtonPressed() and optionsMenuInvoked() on the dialpad fragment
- * when appropriate.
- *
- * TODO: Refactor the app so this interchange is a bit cleaner.
- */
- public interface HostInterface {
- void setFloatingActionButtonVisible(boolean visible);
- }
-
- /**
* LinearLayout with getter and setter methods for the translationY property using floats,
* for animation purposes.
*/
- public static class DialpadSlidingLinearLayout extends LinearLayout {
+ public static class DialpadSlidingRelativeLayout extends RelativeLayout {
- public DialpadSlidingLinearLayout(Context context) {
+ public DialpadSlidingRelativeLayout(Context context) {
super(context);
}
- public DialpadSlidingLinearLayout(Context context, AttributeSet attrs) {
+ public DialpadSlidingRelativeLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
- public DialpadSlidingLinearLayout(Context context, AttributeSet attrs, int defStyle) {
+ public DialpadSlidingRelativeLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@@ -167,6 +156,7 @@ public class DialpadFragment extends AnalyticsFragment
private DialpadView mDialpadView;
private EditText mDigits;
+ private int mDialpadSlideInDuration;
/** Remembers if we need to clear digits field when the screen is completely gone. */
private boolean mClearDigitsOnStop;
@@ -178,6 +168,8 @@ public class DialpadFragment extends AnalyticsFragment
private final Object mToneGeneratorLock = new Object();
private View mSpacer;
+ private FloatingActionButtonController mFloatingActionButtonController;
+
/**
* Set of dialpad keys that are currently being pressed
*/
@@ -337,6 +329,8 @@ public class DialpadFragment extends AnalyticsFragment
if (state != null) {
mDigitsFilledByIntent = state.getBoolean(PREF_DIGITS_FILLED_BY_INTENT);
}
+
+ mDialpadSlideInDuration = getResources().getInteger(R.integer.dialpad_slide_in_duration);
}
@Override
@@ -388,6 +382,14 @@ public class DialpadFragment extends AnalyticsFragment
mDialpadChooser = (ListView) fragmentView.findViewById(R.id.dialpadChooser);
mDialpadChooser.setOnItemClickListener(this);
+ final View floatingActionButtonContainer =
+ fragmentView.findViewById(R.id.dialpad_floating_action_button_container);
+ final View floatingActionButton =
+ (ImageButton) fragmentView.findViewById(R.id.dialpad_floating_action_button);
+ floatingActionButton.setOnClickListener(this);
+ mFloatingActionButtonController = new FloatingActionButtonController(getActivity(),
+ floatingActionButtonContainer, floatingActionButton);
+
return fragmentView;
}
@@ -870,27 +872,22 @@ public class DialpadFragment extends AnalyticsFragment
return popupMenu;
}
- /**
- * Called by the containing Activity to tell this Fragment that the dial button has been
- * pressed.
- */
- public void dialButtonPressed() {
- mHaptic.vibrate();
- handleDialButtonPressed();
- }
-
@Override
public void onClick(View view) {
switch (view.getId()) {
+ case R.id.dialpad_floating_action_button:
+ mHaptic.vibrate();
+ handleDialButtonPressed();
+ break;
case R.id.deleteButton: {
keyPressed(KeyEvent.KEYCODE_DEL);
- return;
+ break;
}
case R.id.digits: {
if (!isDigitsEmpty()) {
mDigits.setCursorVisible(true);
}
- return;
+ break;
}
case R.id.dialpad_overflow: {
mOverflowPopupMenu.show();
@@ -1217,8 +1214,8 @@ public class DialpadFragment extends AnalyticsFragment
if (mDialpadView != null) {
mDialpadView.setVisibility(View.GONE);
}
- ((HostInterface) getActivity()).setFloatingActionButtonVisible(false);
+ mFloatingActionButtonController.setVisible(false);
mDialpadChooser.setVisibility(View.VISIBLE);
// Instantiate the DialpadChooserAdapter and hook it up to the
@@ -1234,7 +1231,8 @@ public class DialpadFragment extends AnalyticsFragment
} else {
mDigits.setVisibility(View.VISIBLE);
}
- ((HostInterface) getActivity()).setFloatingActionButtonVisible(true);
+
+ mFloatingActionButtonController.setVisible(true);
mDialpadChooser.setVisibility(View.GONE);
}
}
@@ -1608,10 +1606,14 @@ public class DialpadFragment extends AnalyticsFragment
if (!hidden) {
if (mAnimate) {
dialpadView.animateShow();
+ mFloatingActionButtonController.scaleIn(mDialpadSlideInDuration);
}
activity.onDialpadShown();
mDigits.requestFocus();
}
+ if (hidden && mAnimate) {
+ mFloatingActionButtonController.scaleOut();
+ }
}
public void setAnimate(boolean value) {
@@ -1623,6 +1625,6 @@ public class DialpadFragment extends AnalyticsFragment
}
public void setYFraction(float yFraction) {
- ((DialpadSlidingLinearLayout) getView()).setYFraction(yFraction);
+ ((DialpadSlidingRelativeLayout) getView()).setYFraction(yFraction);
}
}