diff options
author | calderwoodra <calderwoodra@google.com> | 2017-08-31 14:13:44 -0700 |
---|---|---|
committer | Eric Erfanian <erfanian@google.com> | 2017-09-06 16:44:04 -0700 |
commit | 3e3010d824f2f57a09a4ddba0d304b68f695d0ed (patch) | |
tree | 62aaf4c39b2c92c3d5fe58891fee50c687bf669b | |
parent | cc2cde0555bd49362f7631c64d24221b24ed71c8 (diff) |
Last contact in search is now visible when dialpad is closed.
When the dialpad closes and we enter regular search, the fragment translates
downwards so the upper contact is not cropped. This resulted in the bottom
contact being cropped. Now the fragment translates and resizes so all contacts
fit in the provided space.
from the bugbash:
#20: last contact is hidden off screen when in regular search
screenshot: http://screen/vbduKLKKor2
Bug: 64902476,36880551
Test: manual
PiperOrigin-RevId: 167189351
Change-Id: I3ba5795ba4c2f781dc320add3928c5ad74070b46
-rw-r--r-- | java/com/android/dialer/searchfragment/list/NewSearchFragment.java | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java index 910e454f8..5b3532cdb 100644 --- a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java +++ b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java @@ -32,6 +32,8 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.animation.Interpolator; +import android.widget.FrameLayout; +import android.widget.FrameLayout.LayoutParams; import com.android.contacts.common.extensions.PhoneDirectoryExtenderAccessor; import com.android.dialer.animation.AnimUtils; import com.android.dialer.callintent.CallInitiationType; @@ -198,6 +200,7 @@ public final class NewSearchFragment extends Fragment } } + /** Translate the search fragment and resize it to fit on the screen. */ public void animatePosition(int start, int end, int duration) { // Called before the view is ready, prepare a runnable to run in onCreateView if (getView() == null) { @@ -206,11 +209,30 @@ public final class NewSearchFragment extends Fragment } boolean slideUp = start > end; Interpolator interpolator = slideUp ? AnimUtils.EASE_IN : AnimUtils.EASE_OUT; + int startHeight = getView().getHeight(); + int endHeight = startHeight - (end - start); getView().setTranslationY(start); - getView().animate().translationY(end).setInterpolator(interpolator).setDuration(duration); + getView() + .animate() + .translationY(end) + .setInterpolator(interpolator) + .setDuration(duration) + .setUpdateListener( + animation -> setHeight(startHeight, endHeight, animation.getAnimatedFraction())); updatePositionRunnable = null; } + private void setHeight(int start, int end, float percentage) { + View view = getView(); + if (view == null) { + return; + } + + FrameLayout.LayoutParams params = (LayoutParams) view.getLayoutParams(); + params.height = (int) (start + (end - start) * percentage); + view.setLayoutParams(params); + } + @Override public void onDestroy() { super.onDestroy(); |