Merge pull request #5518 from goblinr/MAPSME-167-ext-search-category-scrolling-behavior-fix

[android] fix search scrolling behavior
This commit is contained in:
Aleksandr Zatsepin 2017-03-06 12:35:58 +03:00 committed by GitHub
commit 958af1de18
4 changed files with 8 additions and 33 deletions

View file

@ -18,6 +18,7 @@
android:elevation="@dimen/margin_half_plus"
tools:targetApi="lollipop">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_scrollFlags="scroll|enterAlways">

View file

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/MwmWidget.TextView.Search"
android:layout_marginBottom="?actionBarSize"
android:text="@string/clear_search"
android:drawableLeft="@drawable/ic_cancel"/>

View file

@ -7,6 +7,7 @@ import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.AppBarLayout;
import android.support.design.widget.CollapsingToolbarLayout;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
@ -33,7 +34,6 @@ import com.mapswithme.maps.location.LocationListener;
import com.mapswithme.maps.routing.RoutingController;
import com.mapswithme.maps.widget.PlaceholderView;
import com.mapswithme.maps.widget.SearchToolbarController;
import com.mapswithme.util.Animations;
import com.mapswithme.util.UiUtils;
import com.mapswithme.util.Utils;
import com.mapswithme.util.log.LoggerFactory;
@ -51,8 +51,6 @@ public class SearchFragment extends BaseMwmFragment
HotelsFilterHolder
{
public static final String PREFS_SHOW_ENABLE_LOGGING_SETTING = "ShowEnableLoggingSetting";
private static final float NESTED_SCROLL_DELTA =
-MwmApplication.get().getResources().getDimension(R.dimen.margin_half);
private long mLastQueryTimestamp;
@ -161,6 +159,7 @@ public class SearchFragment extends BaseMwmFragment
private PlaceholderView mResultsPlaceholder;
private RecyclerView mResults;
private AppBarLayout mAppBarLayout;
private CollapsingToolbarLayout mToolbarLayout;
private View mFilterElevation;
@Nullable
private SearchFilterController mFilterController;
@ -258,6 +257,10 @@ public class SearchFragment extends BaseMwmFragment
{
final boolean hasQuery = mToolbarController.hasQuery();
UiUtils.showIf(hasQuery, mResultsFrame);
AppBarLayout.LayoutParams lp = (AppBarLayout.LayoutParams) mToolbarLayout.getLayoutParams();
lp.setScrollFlags(hasQuery ? AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS
| AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL : 0);
mToolbarLayout.setLayoutParams(lp);
if (mFilterController != null)
mFilterController.show(hasQuery && mSearchAdapter.getItemCount() != 0,
mSearchAdapter.showPopulateButton());
@ -295,6 +298,7 @@ public class SearchFragment extends BaseMwmFragment
ViewGroup root = (ViewGroup) view;
mAppBarLayout = (AppBarLayout) root.findViewById(R.id.app_bar);
mToolbarLayout = (CollapsingToolbarLayout) mAppBarLayout.findViewById(R.id.collapsing_toolbar);
mTabFrame = root.findViewById(R.id.tab_frame);
ViewPager pager = (ViewPager) mTabFrame.findViewById(R.id.pages);
@ -625,7 +629,6 @@ public class SearchFragment extends BaseMwmFragment
if (mToolbarController.hasQuery())
{
mToolbarController.clear();
Animations.nestedScrollAnimation(mResults, (int) NESTED_SCROLL_DELTA, 0);
return true;
}

View file

@ -10,8 +10,6 @@ import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.content.ContextCompat;
import android.util.DisplayMetrics;
import android.support.v4.view.NestedScrollingChild;
import android.support.v4.view.ViewCompat;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewPropertyAnimator;
@ -207,32 +205,6 @@ public final class Animations
animator.start();
}
public static <T extends View & NestedScrollingChild> void nestedScrollAnimation(
@NonNull final T view, final int deltaY, final int deltaX)
{
ViewCompat.startNestedScroll(view, ViewCompat.SCROLL_AXIS_VERTICAL);
ValueAnimator animator = ValueAnimator.ofFloat(0.0f, 1.0f);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener()
{
@Override
public void onAnimationUpdate(ValueAnimator animation)
{
ViewCompat.dispatchNestedPreScroll(view, deltaX, deltaY, null, null);
ViewCompat.dispatchNestedScroll(view, 0, 0, 0, 0, null);
}
});
animator.addListener(new UiUtils.SimpleAnimatorListener()
{
@Override
public void onAnimationEnd(Animator animation)
{
ViewCompat.stopNestedScroll(view);
}
});
animator.setDuration(DURATION_DEFAULT);
animator.start();
}
private static void setCardBackgroundColor(@NonNull View view)
{
Context context = view.getContext();