2013-07-29 28 views
7

मैं उपयोगकर्ताओं को यह संकेत देने के लिए एक तरीका ढूंढ रहा हूं कि नेविगेशन ड्रॉवर मौजूद है।नेविगेशन ड्रावर संकेत एनीमेशन (जैसे Google Currents)

मुझे यह पसंद है कि Google Currents संकेत देता है कि अगला पृष्ठ है, यह केवल अगले पृष्ठ में कुछ पिक्सेल स्लाइड करता है और फिर इसे हटा देता है।

ऐसी एनीमेशन को पूरा करने का सबसे अच्छा तरीका क्या है?

उत्तर

0

यदि आप अपना खुद का कस्टम व्यू ग्रुप लागू कर रहे हैं, तो आपको इसके लिए व्यूड्रैगहेपर का उपयोग करना चाहिए। यह टच घटनाओं को संसाधित करने और आवश्यक होने पर आपके विचारों को स्क्रॉल करने का ख्याल रखेगा। एक जिसे आपने अपनी जरूरतों को पूरा करने के लिए कॉन्फ़िगर किया है, आपको अपने दराज दृश्य पर smoothSlideViewTo पर कॉल करने की आवश्यकता है ताकि वह जिस भी स्थिति को स्क्रॉल कर सके उसे स्क्रॉल कर सके।

Here is a nice intro to ViewDragHelper.

आप एक DrawerLayout उपयोग करते हैं, आप जब उपयोगकर्ता स्क्रीन के किनारे को छूता है डिफ़ॉल्ट रूप से प्रभाव उस तरह का मिलता है। मुझे नहीं लगता कि आप इसे प्रोग्रामेटिक रूप से ट्रिगर कर सकते हैं, अगर आप यही चाहते हैं, peekDrawer() को निजी घोषित किया गया है, यह भी घोषित किया गया है, निजी, आंतरिक ViewDragHelper.Callback इंस्टेंस।

1

यह केवल बाईं तरफ एक संकीर्ण बार प्रदर्शित करेगा - जैसे कि आपने सीमा पर दबाए अपनी उंगली को दबाया है। सुनिश्चित नहीं है कि Google Currents क्या करता है, लेकिन मुझे यह संकेत देने का एक शानदार तरीका माना गया। Source

protected void peekDrawer() { 
    long downTime = SystemClock.uptimeMillis(); 
    long eventTime = SystemClock.uptimeMillis() + 100; 
    MotionEvent motionEvent = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_DOWN, 0, 100, 0); 
    m_drawerLayout.dispatchTouchEvent(motionEvent); 
    motionEvent.recycle(); 

    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      long downTime = SystemClock.uptimeMillis(); 
      long eventTime = SystemClock.uptimeMillis() + 100; 
      MotionEvent motionEvent = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_UP, 0, 100, 0); 
      m_drawerLayout.dispatchTouchEvent(motionEvent); 
      motionEvent.recycle(); 
     } 
    }, (long) (1 * DateUtils.SECOND_IN_MILLIS)); //change 1 to however many seconds you wish to display the hint for 
} 
+0

यह बहुत अच्छा है। साझा करने के लिए धन्यवाद! – danijoo

+0

हाहा कोई चिंता नहीं, शायद वोट दें? – Voy

संबंधित मुद्दे