2012-09-04 20 views
6

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

public class MagazineReaderPagerAdapter extends PagerAdapter { 

    private MagazineReaderActivity activity; 
    private EpubDocument epub; 

    public MagazineReaderPagerAdapter(Context ctx, EpubDocument epub) 
    { 
     activity = (MagazineReaderActivity) ctx; 
     this.epub = epub; 
    } 

    @Override 
     public int getCount() { 
     return epub.getContentDocuments().size(); 
    } 

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 
     ReaderWebViewMulti view = new ReaderWebViewMulti(activity); 
     view.loadContentDocument(epub.getContentDocuments().get(position), epub); 

     ((ViewPager) container).addView(view, 0); 
     return view; 
    } 

    @Override 
    public boolean isViewFromObject(View view, Object object) { 
     return view.equals(object); 
    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
     ((ViewPager) container).removeView((View) object); 
    } 
} 

ReaderWebViewMulti WebView इंडस्ट्रीज़ तक फैली हुई है लागू करता है एक विधि loadContentDocument जो loadDataWithBaseURL के माध्यम से सामग्री लोड करता है:

यह मेरा PagerAdapter है।

संपादित करें: गतिविधि OnCreate setOffscreenPageLimit पर सेट किया गया है 3

viewPager.setOffscreenPageLimit(3); 

करते रहे कि समस्या क्या है, मैं दूसरा 4 आप कर सकते हैं से YouTube

पर एक छोटे से वीडियो बनाया देखें कि प्रत्येक पृष्ठ केवल तभी प्रस्तुत किया जाता है जब यह पहले से दिखाई दे। जब मैं वापस जाता हूं सब कुछ ठीक है।

+0

वर्तमान में 'ViewPager'' के लिए 'ऑफस्क्रीन पेज लिमिट' क्या है? – Devunwired

+0

यह 3 पर सेट है, मैंने इसे – Mate

+2

में जोड़ा है, मुझे एक ही समस्या है ... मैंने डीबग किया और यह ऑफस्क्रीन टुकड़े बनाता है, लेकिन जब मैं पृष्ठ स्क्रॉल करता हूं, तो यह पृष्ठ तब तक दिखाई नहीं देता जब तक कि पृष्ठ न हो स्क्रॉल किया गया: एस –

उत्तर

0

मैंने इसमें कुछ विचार डाले।

class SomeClass implements OnPageChangeListener { 

     private ViewPager viewPager; 

     ... 

     viewPager = ... 
     viewPager.setOnPageChangeListener(this); 

     ... 

     @Override 
     public void onPageScrollStateChanged(int state) { 

      if (state == ViewPager.SCROLL_STATE_IDLE) { 
       // viewpager finished scrolling to a page 

       viewPager.scrollBy(1, 0); 
      } 
     } 
    } 

अगर आप सीधे से आ रही या छोड़ दिया और -1 या 1 पिक्सल द्वारा इस पुस्तक (पेज तुम कहाँ से आ रहे हैं के अनुसार कर रहे हैं की जाँच करने की आवश्यकता होगी: स्क्रीन 1 पिक्सेल स्क्रॉल सही पेज प्रस्तुत करना होगा स्मृति में रहेगा, इसलिए आपको उसको पुनः लोड करने की आवश्यकता नहीं है)। केवल पहले स्क्रॉल (ऐप खोलने के बाद) ऊपर वर्णित समस्या अभी भी बनी रहेगी।

दोष: यदि आप वास्तविक रूप से वास्तविक दिखते हैं, तो आप पेज स्क्रॉलिंग 1 पिक्सेल देख सकते हैं।

कोई भी व्यक्ति मेरे से अधिक समय के साथ एंड्रॉइड कोड में जा सकता है यह देखने के लिए कि स्क्रीन में 1 पिक्सेल कब आता है, और इस व्यवहार में से कुछ की नकल करता है।

0

सेट इस संपत्ति आपके आवेदन के लिए मैनिफ़ेस्ट फ़ाइल

एंड्रॉयड में: hardwareAccelerated = "झूठा"

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