diff options
author | Yorke Lee <yorkelee@google.com> | 2013-05-07 11:59:36 -0700 |
---|---|---|
committer | Yorke Lee <yorkelee@google.com> | 2013-05-14 13:55:21 -0700 |
commit | 3a18654bf87df4f17880551b6cfa45c871917960 (patch) | |
tree | 55a360b02c7e799def416e9b672c52a4028b97e6 /src/com/android/dialer/dialpad/DialpadFragment.java | |
parent | dbb6c6fc024bbacf3b495a44bdddccf8502793ae (diff) |
Animation for smart dialing suggestions
Suggestions now appear with a fade in and slide up animation.
Suggestions vanish with a fade out and slide down animation.
If a suggestion is moved into the middle, it slides to the left/right
as appropriate.
Change the layout containing suggestions to a LinearLayout, in order to
better support animations.
Renamed SmartDialAdapter to SmartDialController, and also refactored
it to handle entries for a LinearLayout instead of a GridView, as well
as adding animation support and view management.
Use null object pattern in SmartDialEntry to better handle null entries.
Start displaying suggestions on the first digit entered.
Bug 8840240
Change-Id: If4e16006c0b36d2244434e0b2d8f3d3b997b0ad2
Diffstat (limited to 'src/com/android/dialer/dialpad/DialpadFragment.java')
-rw-r--r-- | src/com/android/dialer/dialpad/DialpadFragment.java | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/src/com/android/dialer/dialpad/DialpadFragment.java b/src/com/android/dialer/dialpad/DialpadFragment.java index f571d892e..3d75e3983 100644 --- a/src/com/android/dialer/dialpad/DialpadFragment.java +++ b/src/com/android/dialer/dialpad/DialpadFragment.java @@ -67,8 +67,10 @@ import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.EditText; 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; @@ -147,13 +149,12 @@ public class DialpadFragment extends Fragment private DialpadChooserAdapter mDialpadChooserAdapter; /** Will be set only if the view has the smart dialing section. */ - private AbsListView mSmartDialList; + private RelativeLayout mSmartDialContainer; /** - * Adapter for {@link #mSmartDialList}. * Will be set only if the view has the smart dialing section. */ - private SmartDialAdapter mSmartDialAdapter; + private SmartDialController mSmartDialAdapter; private SmartDialCache mSmartDialCache; /** @@ -368,12 +369,12 @@ public class DialpadFragment extends Fragment mDialpadChooser.setOnItemClickListener(this); // Smart dial - mSmartDialList = (AbsListView) fragmentView.findViewById(R.id.dialpad_smartdial_list); - if (mSmartDialList != null) { - mSmartDialAdapter = new SmartDialAdapter(getActivity()); - mSmartDialList.setAdapter(mSmartDialAdapter); - mSmartDialList.setOnItemClickListener(new OnSmartDialItemClick()); - mSmartDialList.setOnItemLongClickListener(new OnSmartDialLongClick()); + mSmartDialContainer = (RelativeLayout) fragmentView.findViewById( + R.id.dialpad_smartdial_container); + + if (mSmartDialContainer != null) { + mSmartDialAdapter = new SmartDialController(getActivity(), mSmartDialContainer, + new OnSmartDialShortClick(), new OnSmartDialLongClick()); } return fragmentView; } @@ -1697,7 +1698,7 @@ public class DialpadFragment extends Fragment } mLastDigitsForSmartDial = digits; - if (digits.length() < 2) { + if (digits.length() < 1) { mSmartDialAdapter.clear(); } else { final SmartDialLoaderTask task = new SmartDialLoaderTask(this, digits, mSmartDialCache); @@ -1716,7 +1717,7 @@ public class DialpadFragment extends Fragment private void initializeSmartDialingState() { // Handle smart dialing related state if (mSmartDialEnabled) { - mSmartDialList.setVisibility(View.VISIBLE); + mSmartDialContainer.setVisibility(View.VISIBLE); mSmartDialCache = SmartDialCache.getInstance(getActivity(), mContactsPrefs.getDisplayOrder()); // Don't force recache if this is the first time onResume is being called, since @@ -1730,14 +1731,14 @@ public class DialpadFragment extends Fragment mSmartDialCache.cacheIfNeeded(true); } } else { - mSmartDialList.setVisibility(View.GONE); + mSmartDialContainer.setVisibility(View.GONE); mSmartDialCache = null; } } - private class OnSmartDialLongClick implements AdapterView.OnItemLongClickListener { + private class OnSmartDialLongClick implements View.OnLongClickListener { @Override - public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { + public boolean onLongClick(View view) { final SmartDialEntry entry = (SmartDialEntry) view.getTag(); if (entry == null) return false; // just in case. mClearDigitsOnStop = true; @@ -1749,9 +1750,9 @@ public class DialpadFragment extends Fragment } } - private class OnSmartDialItemClick implements AdapterView.OnItemClickListener { + private class OnSmartDialShortClick implements View.OnClickListener { @Override - public void onItemClick(AdapterView<?> parent, View view, int position, long id) { + public void onClick(View view) { final SmartDialEntry entry = (SmartDialEntry) view.getTag(); if (entry == null) return; // just in case. // Dial the displayed phone number immediately |