package com.github.miao1007.animewallpaper.ui.widget; import android.animation.Animator; import android.content.Context; import android.content.res.TypedArray; import android.text.Editable; import android.text.TextWatcher; import android.util.AttributeSet; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; import com.github.miao1007.animewallpaper.R; /** * Created by leon on 1/28/16. */ public class SearchBar extends RelativeLayout { static final String TAG = "SearchBar"; private final boolean in = true; @BindView(R.id.internal_iv_search_icon) LinearLayout mInternalIvSearchIcon; @BindView(R.id.internal_rv_holder) RelativeLayout mInternalRvHolder; @BindView(R.id.internal_vs_cancel) ViewSwitcher mInternalVsCancel; @BindView(R.id.internal_iv_clear) ImageView mInternalIvClear; @BindView(R.id.internal_et_search) EditText mInternalEtSearch; private float upDimen = 0f; private InputMethodManager imm; public SearchBar(Context context) { this(context, null); } public SearchBar(Context context, AttributeSet attrs) { this(context, attrs, 0); } public SearchBar(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); TypedArray ta = attrs == null ? null : getContext().obtainStyledAttributes(attrs, R.styleable.SearchBar); if (ta != null) { upDimen = ta.getDimension(R.styleable.SearchBar_sb_float_height, upDimen); ta.recycle(); } init(); } public EditText getEditTextSearch() { return mInternalEtSearch; } @OnClick(R.id.internal_iv_clear) void clearText() { mInternalEtSearch.getText().clear(); } public void setOnButton(final Runnable runnable) { mInternalVsCancel.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mInternalVsCancel.showCancel(false, new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { } @Override public void onAnimationEnd(Animator animation) { post(runnable); } @Override public void onAnimationCancel(Animator animation) { } @Override public void onAnimationRepeat(Animator animation) { } }); } }); } private void init() { //insert first view into the Framlayout,, and return `root view`(this) inflate(getContext(), R.layout.internal_searchbar, this); ButterKnife.bind(this); /** * -root * --RelevantLayout(RealSearch) (view[0]) */ mInternalEtSearch.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(final Editable s) { if (s.length() == 0) { mInternalIvClear.setVisibility(GONE); } else { mInternalIvClear.setVisibility(VISIBLE); } } }); imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); mInternalEtSearch.setFocusable(true); mInternalEtSearch.requestFocus(); } @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); if (imm != null) { imm.hideSoftInputFromWindow(mInternalEtSearch.getWindowToken(), 0); } } public boolean isClosed() { return in; } }