как непрерывно запускать onLongClick Event?

1

Возможно ли реализовать кнопку быстрой перемотки вперед, используя событие кнопки onLongClick?

РЕДАКТИРОВАТЬ

я использовал runnable внутри onlongclicklistner и добавлял код для справки, который нуждается :)

   Button.setOnLongClickListener(new OnLongClickListener() {

        @Override
        public boolean onLongClick(View v) {


            final Runnable r = new Runnable()
            {
                public void run() 
                {//do the forwarding logic here


                     if(Button.isPressed()){

                            Button.postDelayed(this, 1000); //delayed for 1 sec
                        }else{

                        Button.postInvalidate();
                        Button.invalidate();
                        }
                }
            };

            Button.post(r);

            return true;
            }
    });
  • 0
    Вы имеете в виду, что вы хотите, чтобы он начинал быструю перемотку вперед при длинном нажатии, и продолжал делать это, пока вы не отпустите кнопку?
  • 0
    Да, точно........
Показать ещё 1 комментарий
Теги:
button
onclick
forward

2 ответа

2
  1. В вашем событии onLongClick установите переменную-член (например: mShouldFastForward) в true.

  2. В остальной части вашего кода (возможно, каждый кадр играл?) Проверьте, если mShouldFastForward == true; если это так, выполните ускоренную перемотку вперед в этом фрейме.

  3. Используйте событие onTouch чтобы захватить MotionEvent.ACTION_UP чтобы установить mShouldFastForward в false.

  • 0
    остальная часть вашего кода, где вы будете хранить это ??? так как деятельность работает на события правильно ???
  • 0
    Где бы ни был ваш игровой код. В любом цикле или событии запускается воспроизводимое видео. Или, в худшем случае, по таймеру.
Показать ещё 1 комментарий
0

Я сделал это в этом проекте (проект еще не закончен (т.е. Отполирован), но быстро работает):

https://bitbucket.org/owentech/epileptic-gibbon-android

Взгляните на playerfragment.java:

Я обрабатываю это, используя Threads для ускоренной перемотки медиаплеер.

Пример кода из проекта:

/*******************************/
/* Fast-Forward button actions */
/*******************************/

ffbutton.setOnTouchListener(new View.OnTouchListener() {

@Override
public boolean onTouch(View arg0, MotionEvent event) {

   switch (event.getAction() ) { 

       case MotionEvent.ACTION_DOWN: 

           arrays.fastforwardpressed = true;
           FastForwardThread newFFThread = new FastForwardThread();
           arrays.fastforwardfrom = mp.getCurrentPosition();
           arrays.fastforwardto = arrays.fastforwardfrom;

           newFFThread.start();
           break;

       case MotionEvent.ACTION_UP:

           arrays.fastforwardpressed = false;
           mp.seekTo(arrays.fastforwardto);
           break; 

    }

    return true;
  }
});


public class FastForwardThread extends Thread
{
    public FastForwardThread()
    {
        super("FastForwardThread");
    }

    public void run()
    {
        while (arrays.fastforwardpressed == true)
        {

            arrays.fastforwardto = arrays.fastforwardto + 10000;
            int fastforwardseconds = arrays.fastforwardto / 1000;
            int hours = fastforwardseconds / 3600, remainder = fastforwardseconds % 3600, minutes = remainder / 60, seconds = remainder % 60;

            String Hours = Integer.toString(hours);
            String Minutes = Integer.toString(minutes);
            String Seconds = Integer.toString(seconds);

            if (Hours.length() == 1)
            {
                Hours = "0" + Hours;
            }

            if (Minutes.length() == 1)
            {
                Minutes = "0" + Minutes;
            }

            if (Seconds.length() == 1)
            {
                Seconds = "0" + Seconds;
            }

            arrays.formattedfftime = Hours + ":" + Minutes + ":" + Seconds;

            fastforwardHandler.sendEmptyMessage(0);

            try
            {
                sleep(100);
            } catch (InterruptedException e)
            {
                e.printStackTrace();
            }
        }
    }
    }
  • 0
    я хочу продолжить воспроизведение видео в fastforward, как я могу это сделать, не могли бы вы мне помочь, пожалуйста?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню