में कटौती मेरे पास एक स्प्लिट लेआउट के साथ एक टैबलेट एप्लिकेशन है - बाईं ओर एक सूची, और दाईं ओर एक विस्तृत फलक। दायां हाथ फलक एक वेब व्यू है, और इसमें <video>
टैग शामिल है। यह सब ठीक काम कर रहा है, वेबव्यू के पूरे दाएं हाथ को छोड़कर और सादा सफेद प्रस्तुत करता है।<video> के साथ आंशिक स्क्रीन वेबव्यू आधा
यह इस तरह क्यों प्रस्तुत कर रहा है, और मैं एक विशाल हैक डाले बिना इसे कैसे टाल सकता हूं?
मैंने इसे एक साधारण परीक्षण परियोजना में उबाला है, जिसे मैंने on github पोस्ट किया है।
यहां एक स्क्रीनशॉट: http://d.pr/i/dfEh है।
बाईं ओर ग्रे क्षेत्र जहां सूची दृश्य संबंधित है। मैंने सादगी के लिए इसे खाली FrameLayout
में बदल दिया है। वेब व्यू आईएस के दाईं ओर कट ऑफ भाग सूची दृश्य के समान चौड़ाई है। यह भी ध्यान देने योग्य है कि वीडियो के नीचे कोई भी सामग्री काट दिया जाता है - सफेद क्षेत्र वेबव्यू की पूरी ऊंचाई बढ़ाता है।
कुछ बातें मैं कोशिश की है: जावास्क्रिप्ट, अवलोकन मोड
WebViewClient
सेट के साथ विस्तृत व्यूपोर्ट, लोड का उपयोग करें:
- सक्षम और अक्षम
WebSettings
कुछ और के साथ सूची दृश्य की जगह औरWebChromeClient
- हार्डवेयर त्वरण को
- विभिन्न सेटटी चालू और बंद करें
View.setScrollBarStyle
में ngs,WebView.setVerticalScrollBarOverlay
, और इसी तरह <video>
के h264 और aac, m3u8 साथ mp4 सहित ऊंचाई/चौड़ाई गुण और शैलियों- विभिन्न वीडियो प्रारूपों, और एक यूट्यूब RTSP धारा
- विभिन्न उपकरणों tweak सहित, आग HD दिखाया गया है, एक नेक्सस 7, एक आकाशगंगा 10.1, और एक Xoom
- Android संस्करण 3.1, 3.2, 4.0, 4,1
वर्तमान वैकल्पिक हल:
0,123,मैं एक पूर्ण-स्क्रीन वेबव्यू का उपयोग करके इसके चारों ओर काम कर रहा हूं, इसके शीर्ष पर अपनी सूची दृश्य को ओवरले कर रहा हूं, और HTML में बाहरी कंटेनर तत्व पर बाएं मार्जिन सेट कर रहा हूं। यह बल्कि हैकी है, और विभिन्न घनत्वों और संकल्पों पर सूची दृश्य का आकार प्राप्त करना त्रुटि-प्रवण है, इसलिए मैं वास्तव में इसे सही तरीके से हल करना चाहता हूं।
स्निपेट्स:
जैसा कि मैंने उल्लेख किया है, एक (गैर) टेस्ट बेड काम कर GitHub पर पोस्ट किया जाता है, लेकिन यहां महत्वपूर्ण बिट्स हैं:
एचटीएमएल WebView में लोड (इस के सभी है यह):
<html>
<head><title>Title</title></head>
<body style="margin:0">
<video x-webkit-airplay="allow" controls="controls" style="width:100%">
<source src="http://clips.vorwaerts-gmbh.de/VfE_html5.mp4"></source>
</video>
</body>
</html>
मुख्य लेआउट फ़ाइल:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<fragment android:name="com.concentricsky.android.webviewvideotest.ListFragment"
android:id="@+id/item_list"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<!-- The WebView is attached here -->
<FrameLayout android:id="@+id/detail_container"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3" />
</LinearLayout>
onCreateView
में:
View rootView = inflater.inflate(R.layout.fragment_detail, container, false);
webView = (WebView) rootView.findViewById(R.id.webview);
webView.setWebChromeClient(new WebChromeClient());
webView.loadUrl("file:///android_asset/test.html");
return rootView;
मैं वास्तव में यह एक से अधिक मेरे सिर खरोंच रहा हूँ, और मैं हैरान मैं इसके बारे में कोई उल्लेख नहीं मिल पाई किया गया हूँ। हालांकि, किसी भी इनपुट की सराहना की जाती है।
क्या आपने वेबव्यू में वीडियो एम्बेड करने के बजाय वीडियो व्यू ओवरले का उपयोग करने पर विचार किया है? – Phil
यदि वेबव्यू पर वीडियो वीडियो व्यू की तरह है, तो यह एक सतह पर होगा, जो केवल एक हो सकता है, इसलिए आपने ListView हार्डवेयर त्वरण को बंद करने का प्रयास किया है। –
@ निनिन्हो: यह वादा करता है। मैंने 'view.setLayerType (View.LAYER_TYPE_SOFTWARE, null) सेट करने का प्रयास किया है; सूची सूची में 'क्रिएटिव्यू' पर, लेकिन कोई बदलाव नहीं है। उस कॉल के साथ या उसके बिना, 'getLayerType'' पर कॉल, सूची और वेब दृश्य दोनों पर 'LAYER_TYPE_NONE' में परिणाम। सॉफ़्टवेयर परत का अनुरोध करने का कोई और तरीका है?एप्लिकेशन स्तर पर त्वरण को बंद करने से लेआउट समस्या ठीक हो जाती है, लेकिन निश्चित रूप से वीडियो प्रदर्शित नहीं होता है। – dokkaebi