簡體   English   中英

如何在onTouchEvent()中檢測屏幕是否被觸摸

[英]How to detect if screen is touched in onTouchEvent()

我需要了解如何檢測用戶是否觸摸了屏幕。

預期結果:-每當用戶觸摸屏幕時,都應跳過啟動屏幕並移至主要活動。

問題:-每當用戶觸摸屏幕時,都會跳過啟動屏幕,但在try塊的后台睡眠(10500)中,它會繼續運行,並且隨着時間的流逝,Main Activity再次開始,即打開兩次。

到目前為止,我已經做了什么:-我嘗試在while循環中執行一個操作,並給出了一個條件,如果該條件得到滿足(Touch),然后會中斷。但是我似乎沒有得到正確的工作條件。 開機畫面代碼:-

@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();
}

如果在try塊中提供了Statement,則如果滿足條件,它將被破壞,但是條件對我來說是未知的,需要該條件的幫助。 謝謝。

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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM