2010-07-07 10 views
5

मैं एक लाइव वॉलपेपर लिख रहा हूँ और मैं फ़ंक्शन का उपयोग नहीं लगता है: जब का उपयोग करता है एक और स्क्रीन के पार स्वाइपएंड्रॉयड लाइव वॉलपेपर onOffsetsChanged xPixelOffset वापस जाने के लिए वास्तविक पिक्सेल ऑफसेट

public void onOffsetsChanged(float xOffset, float yOffset, 
      float xOffsetStep, float yOffsetStep, int xPixelOffset, 
      int yPixelOffset) 

देखने के लिए, और मैं यह देखने के लिए xPixelOffset का उपयोग किया गया है कि स्क्रीन पिक्सेल में कितनी दूर चली गई है, हालांकि यह पिक्सेल की संख्या को वापस नहीं लौटाती है।

डेस्कटॉप की 5 स्क्रीनों में से प्रत्येक के लिए यह पिक्सेल ऑफ़सेट 0, -80, -160, -240, -320 होने के लिए दिखाता है, हालांकि मैं प्रत्येक बार स्क्रीन की चौड़ाई से ऑफसेट होने की उम्मीद करता हूं (80px के बजाय 240px)

क्या मुझे कुछ याद आ रही है?

उत्तर

7

आप देखेंगे कि जब आप स्क्रॉल करते हैं, तो होम स्क्रीन (आइकन, विगेट्स इत्यादि) का अग्रभूमि पूर्ण स्क्रीन चौड़ाई से बाएं या दाएं स्थानांतरित होता है, लेकिन पृष्ठभूमि छवि (या लाइव वॉलपेपर) केवल चालें उस चौड़ाई के एक अंश से। स्पष्ट परिणाम एक लंबन-स्क्रॉलिंग प्रभाव है।

इसे एक और तरीके से रखने के लिए, अपनी 5 स्क्रीनों को 1200px (5 x स्क्रीन चौड़ाई) की तरह कुछ अंत तक समाप्त करें, लेकिन उसी डिस्प्ले पर वॉलपेपर की अधिकतम चौड़ाई 480px (2 x स्क्रीन चौड़ाई) जैसी कुछ है। , क्योंकि पीछे के रूप में पीछे की ओर स्क्रॉल नहीं करता है।

ऑफसेट्स का उपयोग तब तक नहीं किया जाना चाहिए कि डिस्प्ले के अग्रभूमि कितने दूर चले गए हैं, लेकिन पृष्ठभूमि कितनी दूर चली गई है।

तो आपको अभी भी जानकारी प्राप्त हो रही है जिसे आपको ऑफसेट पैरामीटर से चाहिए। यह सिर्फ इतना है कि उस जानकारी की आपकी व्याख्या को थोड़ा बदलना है।

+0

हाँ, लेकिन जैसा कि मैंने एक लाइव वॉलपेपर मैं इस paralax प्रभाव बनाने की जरूरत होती है, क्योंकि डिफ़ॉल्ट रूप से वॉलपेपर स्थिर है लिख रहा हूँ। इसलिए मैं जानना चाहता हूं कि उपयोगकर्ता कितने "स्क्रीन" स्थानांतरित हो गया है और यह जानने के लिए कि स्क्रीन की अधिकतम संख्या क्या होगी, क्योंकि यह लाइव वॉलपेपर का उपयोग कर होम स्क्रीन या एप्लिकेशन के आधार पर बदल सकता है। – stealthcopter

+1

उपयोगी नोट, फ्लोट xOffset सामान्य इकाइयों (0.0 - 1.0) में ऑफसेट लौटाता है ताकि आप जान सकें कि अधिकतम कब पहुंचता है। – stealthcopter

2

बस अपने कैनवास/बिटमैप को पूरे वर्चुअल वॉलपेपर (जिसमें आयाम स्क्रीनविड्थ * 2, स्क्रीनहेइट) होना चाहिए, और उसके बाद सतह को खींचें xPixelOffset का उपयोग x समन्वय के रूप में होल्डर कैनवास। यह आसान तरीका है।

बेशक ऐसा कोई कानून नहीं है कि आपके वर्चुअल वॉलपेपर को उन आयामों की आवश्यकता हो। यदि आप चाहें तो आइकन की गति पर साथ स्क्रॉल कर सकते हैं। यही वह समय है जब आप अपने स्वयं के पिक्सेल ऑफ़सेट को समझने के लिए xOffset मान का उपयोग करना चाहेंगे।

0
  if(xPixelOffset != 0){ 
       myXPixelOffset = xPixelOffset*((backgroundWidth - screenwidth)/screenwidth); 
      } 

backgroundWidth मधुमक्खी चाहिए screenHeight * 2

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