2012-08-01 24 views
17

का उपयोग करते समय पहले TouchEvent के लिए सुनो एपीआई 14 के साथ शुरू करने से आप इस गतिविधि को SYSTEM_UI_FLAG_HIDE_NAVIGATION का उपयोग उस गतिविधि को बताने के लिए कर सकते हैं, जब तक आप उपयोगकर्ता इंटरैक्शन (स्क्रीन टच) नहीं करते हैं, तब तक नेविगेशन बार को छिपाना चाहते हैं। एक बार जब उपयोगकर्ता स्क्रीन को टैप करता है तो बार दिखाया जाता है।SYSTEM_UI_FLAG_HIDE_NAVIGATION

गतिविधि जो मैं कर रहा हूं वह कुछ क्रिया (एक अलग गतिविधि शुरू करता है) जब उपयोगकर्ता स्क्रीन को छूता है, ऊपर दिए गए ध्वज को मेरे दृश्य में जोड़ने से पहले यह पूरी तरह से काम करता है।

उस ध्वज को जोड़ने के बाद सिस्टम पहले स्क्रीन स्पर्श को रोकता है और एनएवी बार दिखाकर इसे प्रतिक्रिया देता है। यह दूसरा स्पर्श तक नहीं है कि मेरे किसी भी दृश्य, या मेरी गतिविधि को टचवेन्ट प्राप्त हो रहे हैं।

क्या किसी को इस तरह से पता है कि मैं एक श्रोता स्थापित कर सकता हूं जो मुझे इस दूसरी नौवहन ध्वज का उपयोग करते समय दो बार टैप करने की आवश्यकता के बजाय पहली बार स्क्रीन को छुआ जाने देगी?

मैंने निम्नलिखित सभी को आजमाया है और जब भी नेवी बार दिखाने के लिए स्क्रीन को पहली बार स्पर्श किया जाता है तो मुझे उनमें से किसी को कॉलबैक नहीं मिल रहा है।

@Override 
public void onUserInteraction(){ 
    Log.i(myTag, "INTERACT"); 
} 

@Override 
public boolean onGenericMotionEvent(MotionEvent me){ 
    Log.i(myTag, "GENERIC"); 

    return true; 
} 

//I thought maybe the size change would lead to a callback here. No dice though. 
@Override 
public void onWindowAttributesChanged(WindowManager.LayoutParams params){ 
    Log.i(myTag, "WINDOW CHANGE"); 
} 
@Override 
public boolean dispatchTouchEvent(MotionEvent me){ 
    Log.i(myTag, "TOUCH"); 
    return true; 
} 

नोट: मैं पहली बार स्पर्श पर दिखाए जाने से नेविगेशन बार रोकने का प्रयास कर नहीं कर रहा हूँ, मैं सिर्फ जब कि घटना होती भी कुछ अन्य कार्य करना चाहते हैं।

+7

क्या आपने ['View.OnSystemUiVisibilityChangeListener'] (http://developer.android.com/reference/android/view/View.OnSystemUiVisibilityChangeListener.html) की कोशिश की है? –

+0

@ जोशली मैं नहीं था और यह काम करता है! बहुत धन्यवाद। यदि आप कृपया उत्तर दें तो उत्तर दें क्योंकि मैं इसे स्वीकार कर सकता हूं। – FoamyGuy

उत्तर

7

जैसा कि जोश ली ने अपनी टिप्पणी में सुझाव दिया, View.OnSystemUiVisibilityChangeListener कुंजी थी।

mView.setOnSystemUiVisibilityChangeListener(new OnSystemUiVisibilityChangeListener() { 
    @Override 
    public void onSystemUiVisibilityChange(int vis) { 
     Log.i(myTag, "System UI"+ vis); 
     if(vis == 0){ 
      Intent i = new Intent(MainActivity.this, AnotherActivity.class); 
      startActivity(i); 
      finish(); 
     } 
    } 
}); 

मुझे लगता है कि mView किसी भी मानना ​​है कि वर्तमान में आपके गतिविधि में दिखाया जा रहा है के लिए एक संदर्भ हो सकता है:

यहाँ कोड है कि मैं का इस्तेमाल किया है। मेरे मामले में यह एक पूर्णस्क्रीन वीडियो व्यू था, और मेरे लेआउट में एकमात्र दृश्य था।