Мне нужно настроить корзину поиска по умолчанию для управления музыкальным проигрывателем. Я знаю, это звучит очень просто, но я просто не знаю, как настроить поисковый барабан thumb прослушиватель. Я хочу управлять музыкой и менять значок, чтобы играть и приостанавливать, когда пользователь нажимает на значок большого пальца. Как я могу это достичь? Я знаю, что это возможно, потому что раньше я видел приложения, подобные PocketGuide, где реализована эта функциональность. Вот скриншот из приложения PocketGuide стрелка указателя мыши onclicklistener
1
A
ответ
3
Возможно, это вам поможет. Откорректируйте код для ваших нужд.
public class SeekbarWithThumbTouch extends SeekBar {
private int scaledTouchSlop = 0;
private float initTouchX = 0;
private boolean thumbPressed = false;
public SeekbarWithThumbTouch(Context context) {
super(context);
init(context);
}
public SeekbarWithThumbTouch(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public SeekbarWithThumbTouch(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
private void init(Context context) {
scaledTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
Drawable thumb = null;
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
thumb = getThumb();//works only for API >=16!
if (thumb != null) {
//contains current position of thumb in view as bounds
RectF bounds = new RectF(thumb.getBounds());
thumbPressed = bounds.contains(event.getX(), event.getY());
if (thumbPressed) {
Log.d("Thumb", "pressed");
initTouchX = event.getX();
return true;
}
}
break;
case MotionEvent.ACTION_UP:
if (thumbPressed) {
Log.d("Thumb", "was pressed -- listener call");
thumbPressed = false;
}
break;
case MotionEvent.ACTION_MOVE:
if (thumbPressed) {
if (Math.abs(initTouchX - event.getX()) > scaledTouchSlop) {
initTouchX = 0;
thumbPressed = false;
return super.onTouchEvent(event);
}
Log.d("Thumb", "move blocked");
return true;
}
break;
}
return super.onTouchEvent(event);
}
}
Простейший способ архивирования этого (на мой взгляд) заключается в создании CustomView для этого. Если вы хотите, я мог бы ответить с примером для его архивации. –
@ Kenny Seyffarth было бы замечательно. Мне просто нужно контролировать какое-либо действие, нажимая на значок поиска. – David
Thumb является привлекательным, поэтому вы не можете напрямую установить прослушиватель кликов , но установка OnSeekBarChangeListener сообщит вам о начале касания в onStartTrackingTouch и коснитесь в onStopTrackingTouch , если значение не изменилось, тогда это щелчок на большом пальце. – zombie