python webview_kivy 使用webview加载网页

from kivy.app import App

from kivy.uix.widget import Widget

from kivy.clock import Clock

from jnius import autoclass

from android.runnable import run_on_ui_thread

WebView = autoclass(‘android.webkit.WebView’)

WebViewClient = autoclass(‘android.webkit.WebViewClient’)

#activity = autoclass(‘org.renpy.android.PythonActivity’).mActivity

activity = autoclass(‘org.kivy.android.PythonActivity’).mActivity

class Wv(Widget):

def __init__(self, **kwargs):

super(Wv, self).__init__(**kwargs)

Clock.schedule_once(self.create_webview, 0)

@run_on_ui_thread

def create_webview(self, *args):

webview = WebView(activity)

settings = webview.getSettings()

settings.setJavaScriptEnabled(True)

settings.setUseWideViewPort(True) # enables viewport html meta tags

settings.setLoadWithOverviewMode(True) # uses viewport

settings.setSupportZoom(True) # enables zoom

settings.setBuiltInZoomControls(True) # enables zoom controls

wvc = WebViewClient()

webview.setWebViewClient(wvc)

activity.setContentView(webview)

webview.loadUrl(‘http://beta.html5test.com’)

class ServiceApp(App):

def build(self):

return Wv()

if __name__ == ‘__main__’:

ServiceApp().run()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要获取 `webview_flutter` 加载完成后网页的高度,可以使用 `WebViewController` 和 `JavascriptChannel`。 首先,创建一个 `JavascriptChannel`,用于将网页高度传递给 Flutter 端: ```dart class HeightChannel { final Function(double) onReceiveHeight; HeightChannel(this.onReceiveHeight); void receiveHeight(String height) { double parsedHeight = double.tryParse(height); if (parsedHeight != null) { onReceiveHeight(parsedHeight); } } } ``` 然后,创建一个 `WebViewController`,并在 `WebView` 中使用它: ```dart WebViewController _controller; double _webViewHeight = 0.0; @override Widget build(BuildContext context) { return WebView( initialUrl: 'https://www.example.com', javascriptMode: JavascriptMode.unrestricted, onWebViewCreated: (controller) { _controller = controller; _controller.addJavascriptChannel( name: 'heightChannel', onMessageReceived: (message) { HeightChannel((height) { setState(() { _webViewHeight = height; }); }).receiveHeight(message); }); }, onPageFinished: (url) { _controller.evaluateJavascript(''' heightChannel.postMessage(document.documentElement.scrollHeight.toString()); '''); }, ); } ``` 在上述代码中,`onWebViewCreated` 方法中创建了一个名为 `heightChannel` 的 `JavascriptChannel`,并在 `onPageFinished` 方法中使用 `evaluateJavascript` 方法向网页发送消息,获取网页的高度。当网页发送高度信息时,`onMessageReceived` 回调会被触发,将高度传递给 `HeightChannel`,并在 Flutter 端更新 `_webViewHeight` 的值。 最后,你可以使用 `_webViewHeight` 属性来显示网页的高度,例如: ```dart Text('Webview height: $_webViewHeight') ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值