2015-04-07 2 views
0

Мне нужно понять, как определить, коснулся ли пользователь экрана.Как определить, затронут ли экран в onTouchEvent()

Ожидаемый результат: -Когда пользователь прикасается к экрану, он должен пропустить экран всплеска и перейти к основному действию.

Проблема: при каждом касании экрана экран заставки пропускается, но в фоновом режиме спящий (10500) в блоке try продолжает работать, и по мере того, как он истекает, основное действие запускается снова, то есть оно открывается два раза.

Что я сделал до сих пор: -Я пробовал делать цикл while и давал условие, если условие выполнено (от Touch), тогда break.But, похоже, я не получаю правильное рабочее состояние. Всплеск Code Screen: -

@Override 
protected void onCreate(Bundle splashState) { 
    // TODO Auto-generated method stub 
    super.onCreate(splashState); 
    setContentView(R.layout.splash); 
    ourSong = MediaPlayer.create(Splash.this, R.raw.splashsound); 
    ourSong.start(); 
    Thread timer = new Thread() { 
     public void run() { 
      do 
      { 
      try { 
       //if(onTouchEvent(null)) 
       // break; 
       sleep(10500); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } finally { 
       startActivity(new Intent("com.first.MAINACTIVITY")); 
      } 
     }while(false); 
     } 
    }; 

    timer.start(); 
} 
@Override 
public boolean onTouchEvent(MotionEvent event) { 
    // TODO Auto-generated method stub 
    if (event.getAction() == MotionEvent.ACTION_DOWN) { 
     startActivity(new Intent("com.first.MAINACTIVITY")); 
     finish(); 
     ourSong.release(); 
    } 
    return super.onTouchEvent(event); 
} 

@Override 
protected void onPause() { 
    // TODO Auto-generated method stub 
    super.onPause(); 
    finish(); 
    ourSong.release(); 
} 

Если Заявление предоставляется в блоке Ьгу поэтому, если условие было бы break.But состояние неизвестно me.Need помощи с условием. Спасибо.

ответ

1
private boolean isSplashRunning = true; 

@Override 
protected void onCreate(Bundle splashState) { 
    // TODO Auto-generated method stub 
    super.onCreate(splashState); 
    setContentView(R.layout.splash); 
    ourSong = MediaPlayer.create(Splash.this, R.raw.splashsound); 
    ourSong.start(); 
    Thread timer = new Thread() { 
     public void run() { 
      do 
      { 
      try { 
       //if(onTouchEvent(null)) 
       // break; 
       sleep(10500); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } finally { 
       if(isSplashRunning) 
        startActivity(new Intent("com.first.MAINACTIVITY")); 
      } 
     }while(false); 
     } 
    }; 

    timer.start(); 
} 
@Override 
public boolean onTouchEvent(MotionEvent event) { 
    // TODO Auto-generated method stub 
    if (event.getAction() == MotionEvent.ACTION_DOWN) { 
     isSplashRunning = false; //or in onPause 
     startActivity(new Intent("com.first.MAINACTIVITY")); 
     finish(); 
     ourSong.release(); 
    } 
    return super.onTouchEvent(event); 
} 

@Override 
protected void onPause() { 
    // TODO Auto-generated method stub 
    isSplashRunning = false; 
    super.onPause(); 
    finish(); 
    ourSong.release(); 
} 
+0

Спасибо большое! Это действительно помогло! –