2016-12-13 2 views
2

Я хочу сделать кнопку, которая что-то делает, когда удерживается в течение 3 секунд, и я получил это. Он работает, но мне интересно, правильно ли он делает что-то, что я имею в виду под этим, что я хочу сделать все кнопки одинаковыми, целые меню на основе удержания для x секунд, а затем приступить к чему-то, и мне интересно, не будет проблем и не заставит мое приложение лагги.Android удерживайте кнопку в течение нескольких секунд, а затем сделайте что-то

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    onbutton = (Button)findViewById(R.id.onbutton); 
    onbutton.setOnTouchListener(new View.OnTouchListener() { 
     private Handler handler; 
     @Override 
     public boolean onTouch(View view, MotionEvent motionEvent) { 
      switch(motionEvent.getAction()){ 
       case MotionEvent.ACTION_DOWN: 
        onbutton.setBackgroundResource(R.drawable.onbuttonshape); 
        handler = new Handler(); 
        handler.postDelayed(run,3000); 
        break; 
       case MotionEvent.ACTION_UP: 
        onbutton.setBackgroundResource(R.drawable.buttonshape); 
        handler.removeCallbacks(run); 
        break; 
      } 
      return true; 
     } 
     Runnable run = new Runnable() { 
      @Override 
      public void run() { 
       Toast.makeText(MainActivity.this, "delayed msg", Toast.LENGTH_SHORT).show(); 
      } 
     }; 
    }); 
} 
+1

Почему бы просто не использовать 'setOnLongClickListener()'? Должно быть, это ровно 3 секунды? – JDC

+1

Я думаю, что это относится к codereview.stackexchange.com. – shmosel

ответ

1

Я бы просто использовать метод setOnLongClickListener():

button.setOnLongClickListener(new OnLongClickListener() { 
    @Override 
    public boolean onLongClick(View v) { 
     // Do what you want to do atfer a long click here 
     return true; 
    } 
}); 
+0

Как вы устанавливаете для этого 3-секундную продолжительность? Я не уверен, что ты сможешь. – FoxDonut

2

Не изобретайте колесо Android имеет

setOnLongClickListener() 

Что вы можете подписаться на и так обнаружить, что долго нажмите, который вы ищете ..

Документ here

+0

Я считаю, что идея заключалась в том, чтобы иметь возможность изменять и устанавливать фактическую продолжительность печати. Вышеприведенное не позволяет этого. Дайте мне знать, если я ошибаюсь. – FoxDonut

Смежные вопросы