2015-07-06 6 views
12

मेरे पास एक मोबाइल वेबसाइट है जो स्मार्टफोन जैसे छोटे उपकरणों के लिए बहुत उपयुक्त है, लेकिन टैबलेट पर अच्छा नहीं लग रहा है।टैबलेट में वेबव्यू बनाएं एक छोटे से डिवाइस को अनुकरण करें

मैं वेबसाइट प्रदर्शित करने के लिए वेबव्यू का उपयोग कर रहा हूं। यह वेबदृश्य सभी स्क्रीन क्षेत्र पर है। क्या कोई तरीका है कि मैं वेबव्यू एक छोटे डिवाइस अनुकरण कर सकता हूं?

enter image description here

मैं काफी डॉक्स विकल्पों में से क्या संयोजन से नहीं मिला (, setUseWideViewPort, setDefaultZoom) मेरे प्राप्त जो मैं चाहता कर देगा। किसी भी तरह की सहायता को आभार समझेंगे।

ओब्स: मैंने पहले ही टेक्स्ट ज़ूम (setTextZoom(int)) सेट करने का प्रयास किया है। यह थोड़ा बेहतर हो गया, लेकिन स्मार्टफोन जितना अच्छा नहीं था।

Obs2: I वेबसाइट बदल नहीं सकता है। :(

अद्यतन:

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

ओब्स: ज़ूम काम नहीं कर रहा है। एचटीएमएल पेज ने इसे सक्षम नहीं किया है। और मुझे लगता है कि यह एक अच्छा तरीका नहीं है, ज़ूम के बाद से कथित वेबव्यू आकार को नहीं बदलता है।

+0

क्या आपने एंड्रॉइड देव साइट पर ज़ूमिंग ए व्यू पर मार्गदर्शिका देखी है? यह मदद कर सकता है .. http://developer.android.com/training/animation/zoom.html#setup – frgnvola

+0

हाँ। ऐसा प्रतीत नहीं होता है। दृश्य का विस्तार करने से पृष्ठ का HTML अलग-अलग व्यवहार नहीं करता है। –

+0

हम्म .. आप साइट एजेंट को साइट ब्राउज़र के रूप में प्रदर्शित करने के लिए उपयोगकर्ता एजेंट को स्विच करने का प्रयास कर सकते हैं, जो इसे टेबलेट पर बेहतर बना सकता है – frgnvola

उत्तर

10

अद्यतन: यदि आपके पास एक नया एपीआई (> 18) है आप इस प्रश्न के अंत में नोट को देखना चाह सकते हैं।


काफी थोड़ी देर के लिए संघर्ष करने के बाद मुझे समाधान मिला!

समाधान ज़ूमिंग पर नहीं था। ज़ूम को HTML पृष्ठ के लिए सक्षम नहीं किया गया था और यह HTML द्वारा अनुमानित आकार को प्रभावित नहीं करता था।

मैं वेबव्यू की चौड़ाई को कम करके यह मिल गया:

ViewGroup.LayoutParams webviewLayoutParameters = mWebView.getLayoutParams(); 

webviewLayoutParameters.width = (int) (760); 
webviewLayoutParameters.height =(int) (webviewHeight); 
mWebView.setLayoutParams(webviewLayoutParameters); 

उसके बाद पृष्ठ के रूप में एक शैली है कि स्क्रीन के लिए बदल आकार की तुलना में कम 768px, यह अलग देखने के लिए शुरू कर दिया था। काफी बेहतर।

लेकिन फिर मैं उस छोटे वेबव्यू को विस्तारित करना चाहता था ताकि यह पूरे स्क्रीन पर फिट हो सके। इसके लिए मैंने scaleX और scaleY का उपयोग किया।

यह मेरा पूरा टिप्पणी की समाधान है:

// First, get the current screen size 
Display display = getWindowManager().getDefaultDisplay(); 
Point size = new Point(); 
display.getSize(size); 
int displayWidth = size.x; 
int displayHeight = size.y; 

//Then, set the amount you want to make your screen smaller. This means that it will comunicate to the HTML that its 20% smaller than it really is 
float amplification_ratio = (float) 0.20; 

// Shrink webview size 
ViewGroup.LayoutParams webviewLayoutParameters = mWebView.getLayoutParams(); 
webviewLayoutParameters.width = (int) (displayWidth*(1-amplification_ratio)); 
webviewLayoutParameters.height =(int) (displayHeight*(1-amplification_ratio)); 
mWebView.setLayoutParams(webviewLayoutParameters); 

// Now scale it the inverse ammount so it will take the full screen. 
mWebView.setScaleX(1/(1 - amplification_ratio)); 
mWebView.setScaleY(1/(1 - amplification_ratio)); 

यह बहुत अच्छी तरह से काम किया। मैं इसे इस तरह से स्केल करने में कामयाब रहा कि स्क्रीन आकार बदलता है। सिकुड़ने और स्केलिंग से छवि की गुणवत्ता कम हो जाएगी, लेकिन यह एक बड़ा सौदा नहीं है।

ओब्स: HTML पृष्ठ बूटस्ट्रैप में बनाया गया था और केवल बूटस्ट्रैप के -xs डिवाइसों के लिए कक्षाएं थीं। तो मुझे स्क्रीन को अनुकरण करना था 768px से छोटा था।


Obs2 (अद्यतन): इस प्रक्रिया

मैं अपने ऐप पर इस कार्यान्वित नामकरण, यह परीक्षण किया (मॉडल और एकीकरण), और इसके अब उत्पादन में रहते हैं। कार्यों और चर बनाने के लिए, मुझे इस प्रक्रिया का नाम देना पड़ा। यह एक वेबव्यू पिक्सेल के आकार को बढ़ाने की तरह है। इस तरह, वेबव्यू अभी भी पूरी स्क्रीन को फेंक देगा, लेकिन इसमें चौड़ाई होगी, पिक्सेल में, जो छोटा है।

इस बात को ध्यान में रखते हुए, pixelEnlargementFactor, pixelMagnificationRatio या pixelSizeMultiplicator जैसे किसी भी नाम का नाम अच्छा होगा।


अद्यतन:

चेतावनी: केवल विशिष्ट मामलों में उपरोक्त विधि का प्रयोग करें!

मेरे पास एक पुराना एपीआई संस्करण (15) था और कई विकल्पों के साथ RelativeLayout था। उसके बाद, setInitialScale(120) काम नहीं किया था जैसा मैं चाहता था।

अब मैं कम विकल्प के साथ एक सरल FrameLayout को 19 मेरी एपीआई और मेरे लेआउट बदल दिया है। कमांड mWebView.getSettings().setUseWideViewPort(false) के साथ कमांड जो मैंने बहुत कम कोड के साथ पहले हासिल किया था।

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