diff --git a/app/src/main/java/com/hippo/ehviewer/widget/SearchBar.java b/app/src/main/java/com/hippo/ehviewer/widget/SearchBar.java index 311dfab72..2598c0d9e 100644 --- a/app/src/main/java/com/hippo/ehviewer/widget/SearchBar.java +++ b/app/src/main/java/com/hippo/ehviewer/widget/SearchBar.java @@ -45,6 +45,7 @@ import android.widget.TextView; import com.hippo.ehviewer.R; import com.hippo.view.ViewTransition; import com.hippo.widget.SimpleImageView; +import com.hippo.yorozuya.AnimationUtils; import com.hippo.yorozuya.MathUtils; import com.hippo.yorozuya.SimpleAnimatorListener; import com.hippo.yorozuya.ViewUtils; @@ -78,9 +79,8 @@ public class SearchBar extends FrameLayout implements View.OnClickListener, private TextView mTitleTextView; private SimpleImageView mActionButton; private SearchEditText mEditText; - private ListView mList; + private View mListContainer; private View mListHeader; - private boolean mHeaderAttached; private ViewTransition mViewTransition; @@ -117,12 +117,13 @@ public class SearchBar extends FrameLayout implements View.OnClickListener, LayoutInflater inflater = LayoutInflater.from(context); inflater.inflate(R.layout.widget_search_bar, this); - mMenuButton = (SimpleImageView) findViewById(R.id.search_menu); - mTitleTextView = (TextView) findViewById(R.id.search_title); - mActionButton = (SimpleImageView) findViewById(R.id.search_action); - mEditText = (SearchEditText) findViewById(R.id.search_edit_text); - mList = (ListView) findViewById(R.id.search_bar_list); - mListHeader = inflater.inflate(R.layout.header_suggestion_list, mList, false); + mMenuButton = (SimpleImageView) ViewUtils.$$(this, R.id.search_menu); + mTitleTextView = (TextView) ViewUtils.$$(this, R.id.search_title); + mActionButton = (SimpleImageView) ViewUtils.$$(this, R.id.search_action); + mEditText = (SearchEditText) ViewUtils.$$(this, R.id.search_edit_text); + mListContainer = ViewUtils.$$(this, R.id.list_container); + ListView list = (ListView) ViewUtils.$$(mListContainer, R.id.search_bar_list); + mListHeader = ViewUtils.$$(mListContainer, R.id.list_header); mViewTransition = new ViewTransition(mTitleTextView, mEditText); @@ -139,23 +140,19 @@ public class SearchBar extends FrameLayout implements View.OnClickListener, mSuggestionList = new ArrayList<>(); mSuggestionAdapter = new ArrayAdapter<>(getContext(), R.layout.item_simple_list, mSuggestionList); - mHeaderAttached = true; - mList.addHeaderView(mListHeader); - mList.setAdapter(mSuggestionAdapter); - mList.setOnItemClickListener(new AdapterView.OnItemClickListener() { + list.setAdapter(mSuggestionAdapter); + list.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { - String suggestion = mSuggestionList.get(MathUtils.clamp( - position - mList.getHeaderViewsCount(), 0, mSuggestionList.size() - 1)); + String suggestion = mSuggestionList.get(MathUtils.clamp(position, 0, mSuggestionList.size() - 1)); mEditText.setText(suggestion); mEditText.setSelection(mEditText.getText().length()); } }); - mList.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { + list.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView parent, View view, int position, long id) { - String suggestion = mSuggestionList.get(MathUtils.clamp( - position - mList.getHeaderViewsCount(), 0, mSuggestionList.size() - 1)); + String suggestion = mSuggestionList.get(MathUtils.clamp(position, 0, mSuggestionList.size() - 1)); mSearchDatabase.deleteQuery(suggestion); updateSuggestions(); return true; @@ -164,17 +161,11 @@ public class SearchBar extends FrameLayout implements View.OnClickListener, } private void addListHeader() { - if (!mHeaderAttached) { - mHeaderAttached = true; - mListHeader.setVisibility(VISIBLE); - } + mListHeader.setVisibility(VISIBLE); } private void removeListHeader() { - if (mHeaderAttached) { - mHeaderAttached = false; - mListHeader.setVisibility(GONE); - } + mListHeader.setVisibility(GONE); } private void updateSuggestions() { @@ -348,10 +339,11 @@ public class SearchBar extends FrameLayout implements View.OnClickListener, if (animation) { ObjectAnimator oa = ObjectAnimator.ofFloat(this, "progress", 1f); oa.setDuration(ANIMATE_TIME); + oa.setInterpolator(AnimationUtils.FAST_SLOW_INTERPOLATOR); oa.addListener(new SimpleAnimatorListener() { @Override public void onAnimationStart(Animator animation) { - mList.setVisibility(View.VISIBLE); + mListContainer.setVisibility(View.VISIBLE); mInAnimation = true; } @@ -365,7 +357,7 @@ public class SearchBar extends FrameLayout implements View.OnClickListener, } oa.start(); } else { - mList.setVisibility(View.VISIBLE); + mListContainer.setVisibility(View.VISIBLE); setProgress(1f); } } @@ -382,6 +374,7 @@ public class SearchBar extends FrameLayout implements View.OnClickListener, if (animation) { ObjectAnimator oa = ObjectAnimator.ofFloat(this, "progress", 0f); oa.setDuration(ANIMATE_TIME); + oa.setInterpolator(AnimationUtils.SLOW_FAST_INTERPOLATOR); oa.addListener(new SimpleAnimatorListener() { @Override public void onAnimationStart(Animator animation) { @@ -390,7 +383,7 @@ public class SearchBar extends FrameLayout implements View.OnClickListener, @Override public void onAnimationEnd(Animator animation) { - mList.setVisibility(View.GONE); + mListContainer.setVisibility(View.GONE); mInAnimation = false; } }); @@ -400,14 +393,14 @@ public class SearchBar extends FrameLayout implements View.OnClickListener, oa.start(); } else { setProgress(0f); - mList.setVisibility(View.GONE); + mListContainer.setVisibility(View.GONE); } } @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { super.onLayout(changed, left, top, right, bottom); - if (mList.getVisibility() == View.VISIBLE) { + if (mListContainer.getVisibility() == View.VISIBLE) { mWidth = right - left; mHeight = bottom - top; } diff --git a/app/src/main/res/layout/header_suggestion_list.xml b/app/src/main/res/layout/header_suggestion_list.xml deleted file mode 100644 index 073875a2d..000000000 --- a/app/src/main/res/layout/header_suggestion_list.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - diff --git a/app/src/main/res/layout/widget_search_bar.xml b/app/src/main/res/layout/widget_search_bar.xml index cfe21becc..714bef93d 100644 --- a/app/src/main/res/layout/widget_search_bar.xml +++ b/app/src/main/res/layout/widget_search_bar.xml @@ -71,15 +71,26 @@ - + android:orientation="vertical" + android:visibility="gone"> + + + + + -