2009-07-06 13 views
5

इसे आसान बनाने के लिए: मैं बाद में को पुनर्स्थापित करने के लिए वेबव्यू में प्रदर्शित एक HTML फ़ाइल में वर्तमान स्थिति (शायद कई स्थितियों) को बुकमार्क करना चाहता हूं। कोई भी छोटा संकेत मदद करेगा। :)वेबव्यू में दस्तावेज़ स्थिति प्राप्त करना?

उत्तर

6

यदि किसी दिए गए पृष्ठ में कहीं भी "वर्तमान स्थिति" का मतलब है, तो मुझे विश्वास नहीं है कि संभव है ... कम से कम जावा से पूरी तरह से नहीं। जावा के संपर्क में आने वाले पूरे वेबकिट एपीआई में कुछ भी नहीं है जो पृष्ठों की सामग्री से संबंधित है।

आप पेज की सामग्री पर नियंत्रण है, और वहाँ एक रास्ता के माध्यम से इन-पेज जावास्क्रिप्ट इन पदों को पता करने के लिए हैं, तो आप कर सकते हैं:

चरण # 1: उपयोग WebView#addJavascriptInterface() एक वस्तु recordPosition() विधि के कुछ प्रकार के साथ जोड़ने के लिए , जहां कहीं भी उपयुक्त हो,

चरण # 2: एक जावास्क्रिप्ट फ़ंक्शन बनाएं जो इंजेक्शन ऑब्जेक्ट पर recordPosition() पर कॉल करता है।

और फिर या तो:

चरण # 3 ए: ट्रिगर है कि जावास्क्रिप्ट से ही जावास्क्रिप्ट समारोह (जैसे, एक क्लिक के आधार पर), या

चरण # 3 बी: loadUrl("javascript:..."); अपने WebView, जहां ... है पर कॉल चरण # 2 से जावास्क्रिप्ट फ़ंक्शन को ट्रिगर करने के लिए जावास्क्रिप्ट कोड द्वारा प्रतिस्थापित किया गया।

इन पदों को बहाल करने के लिए भी वैसे ही काम करना होगा: जावास्क्रिप्ट को वास्तविक पुनर्स्थापना करना है, संभवतः जावा कोड द्वारा ट्रिगर किया गया है।

ध्यान दें कि मुझे पता नहीं है कि आप क्या चाहते हैं (वर्तमान स्थिति प्राप्त करें/सेट करें) जावास्क्रिप्ट से उपलब्ध है, क्योंकि मैं एक ब्राउज़र में कोडर नहीं हूं।

onSaveInstanceState() विधि में, गणना कितनी दूर पेज नीचे उपयोगकर्ता स्क्रॉल किया था:

+0

कमाल का जवाब! बहुत बहुत धन्यवाद। संबंधित प्रश्न: http://stackoverflow.com/questions/1091048/alternatives-to-window-scrollmaxy – yanchenko

6

दृष्टिकोण मैं ले लिया इस प्रकार थी।

int contentHeight = webView.getContentHeight(); 
    int scrollY = webView.getScrollY(); 

    float scrollPercent = ((float) scrollY/((float) contentHeight)); 

बंडल में छेड़छाड़ करें। जब onCreate() विधि में पेज को बहाल करने, पेज लोड हो रहा है खत्म करने के लिए के लिए (WebClient.onPageFinished() में) प्रतीक्षा करें, दर्ज की स्थिति के लिए स्क्रॉल:

int contentHeight = webView.getContentHeight(); 
    int y = (int) ((float) contentHeight * scrollPercent); 
    webView.scrollTo(0, y); 
  • एक float का उपयोग करना और एक अनुपात की गणना के बीच flipping के मामले में काम करता है परिदृश्य और चित्र।
  • काम कर सकते हैं अच्छी तरह से लेकिन पूरी तरह से जब ऑटोरेज़िंग छवियों के साथ मिश्रित हो।
  • स्केल को भी ध्यान में रखा जा सकता है। मैं पृष्ठ को लोड करना शुरू करने से पहले onPause() विधि में और webView.setInitialScale(scale) में वरीयता में स्केल को रोकता हूं।
  • मुझे पता चला है कि scrollPercent > 0 बेहतर दिखने पर वेब दृश्य को अदृश्य में सेट करना है।
+0

अच्छी तरह से काम करता है।और मैं पुष्टि करता हूं कि पैमाने को ध्यान में रखा जाना चाहिए। धन्यवाद। –

+0

@jamesh scrollRatio क्या है? – 135

+0

@ 135 ग्रेट स्पॉट! - मैंने इसे स्क्रॉल पर बदल दिया। – jamesh

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