You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.7 KiB
62 lines
1.7 KiB
package acr.browser.lightning.view; |
|
|
|
import android.content.Context; |
|
import android.support.annotation.Nullable; |
|
import android.util.AttributeSet; |
|
import android.view.MotionEvent; |
|
import android.view.ViewConfiguration; |
|
import android.widget.AutoCompleteTextView; |
|
|
|
public class SearchView extends AutoCompleteTextView { |
|
|
|
public interface PreFocusListener { |
|
void onPreFocus(); |
|
} |
|
|
|
@Nullable private PreFocusListener mListener; |
|
private boolean mIsBeingClicked; |
|
private long mTimePressed; |
|
|
|
public SearchView(Context context) { |
|
super(context); |
|
} |
|
|
|
public SearchView(Context context, AttributeSet attrs) { |
|
super(context, attrs); |
|
} |
|
|
|
public SearchView(Context context, AttributeSet attrs, int defStyleAttr) { |
|
super(context, attrs, defStyleAttr); |
|
} |
|
|
|
public void setOnPreFocusListener(@Nullable PreFocusListener listener) { |
|
mListener = listener; |
|
} |
|
|
|
@Override |
|
public boolean onTouchEvent(MotionEvent event) { |
|
switch (event.getAction()) { |
|
case MotionEvent.ACTION_DOWN: |
|
mTimePressed = System.currentTimeMillis(); |
|
mIsBeingClicked = true; |
|
break; |
|
case MotionEvent.ACTION_CANCEL: |
|
mIsBeingClicked = false; |
|
break; |
|
case MotionEvent.ACTION_UP: |
|
if (mIsBeingClicked && !isLongPress()) { |
|
if (mListener != null) { |
|
mListener.onPreFocus(); |
|
} |
|
} |
|
break; |
|
} |
|
return super.onTouchEvent(event); |
|
} |
|
|
|
private boolean isLongPress() { |
|
return (System.currentTimeMillis() - mTimePressed) >= ViewConfiguration.getLongPressTimeout(); |
|
} |
|
|
|
|
|
}
|
|
|