个性化阅读
专注于IT技术分析

Kotlin Android WebView

Android WebView是一个视图组件, 用于显示应用程序中的网页。它使用WebKit引擎显示网页。 android.webkit.WebView类是AbsoluteLayout类的子类。

WebView的loadUrl()和loadData()方法用于加载和显示网页。要了解有关Android WebView的更多信息, 请访问https://www.srcmini02.com/android-webview-example

有多种方法可以在WebView中加载网页, 例如:

将HTML内容作为字符串加载到类中:

val wedData: String =  "<html><body><h1>Hello, srcmini!</h1></body></html>"
val mimeType: String = "text/html"
val utfType: String = "UTF-8"
webView.loadData(wedData, mimeType, utfType)

从应用程序内加载网页(.html, .jsp等)。在这种情况下, 网页将放置在资产目录中。

webView.loadUrl("file:///android_asset/index.html")

将Web URL内的Web URL加载为:

webView.loadUrl("https://www.srcmini02.com/")

Kotlin Android WebView示例

在此示例中, 我们将在WebView组件中加载Web URL并覆盖URL。

目录结构

Kotlin Android WebView

activity_main.xml

在activity_main.xml文件中添加WebView组件。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="example.srcmini02.com.kotlinwebview.MainActivity">


    <WebView
        android:id="@+id/webView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>
</LinearLayout>

AndroidMenifest.xml

在AndroidMenifest.xml文件中, 添加Internet权限以连接网络连接。

<uses-permission android:name="android.permission.INTERNET"/>

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="example.srcmini02.com.kotlinwebview">
    <uses-permission android:name="android.permission.INTERNET"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

MainActivity.kt

在MainActivity.kt类中添加以下代码。在此类中, 我们使用WebView的loadUrl()方法加载Web URL。

创建一个MyWebViewClient类, 该类扩展了WebViewClient, 该类重写了shouldOverrideUrlLoading()方法。

package example.srcmini02.com.kotlinwebview

import android.app.Activity
import android.os.Build
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.support.annotation.RequiresApi
import android.webkit.WebResourceError
import android.webkit.WebResourceRequest
import android.webkit.WebView
import android.webkit.WebViewClient
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

      /*  val wedData: String =  "<html><body><h1>Hello, srcmini!</h1></body></html>"
        val mimeType: String = "text/html"
        val utfType: String = "UTF-8"
        webView.loadData(wedData, mimeType, utfType)*/

        /* val myWebUrl: String = "file:///android_asset/index.html"
         webView.loadUrl(myWebUrl)*/

        webView.webViewClient = MyWebViewClient(this)
        webView.loadUrl("https://www.srcmini02.com/")
    }
    class MyWebViewClient internal constructor(private val activity: Activity) : WebViewClient() {

        @RequiresApi(Build.VERSION_CODES.LOLLIPOP)
        override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
            val url: String = request?.url.toString();
            view?.loadUrl(url)
            return true
        }

        override fun shouldOverrideUrlLoading(webView: WebView, url: String): Boolean {
            webView.loadUrl(url)
            return true
        }

        override fun onReceivedError(view: WebView, request: WebResourceRequest, error: WebResourceError) {
            Toast.makeText(activity, "Got Error! $error", Toast.LENGTH_SHORT).show()
        }
    }
}

输出:

Kotlin Android WebView
赞(0)
未经允许不得转载:srcmini » Kotlin Android WebView

评论 抢沙发

评论前必须登录!