我们在开发中经常遇到跳h5界面呀,网址呀,都可以直接输入地址就可以
第一步 添加依赖
//WebView
implementation 'com.github.Justson.AgentWeb:agentweb-core:v4.1.9-androidx' // (必选)
第二步 新建一个Web实体,方便传参
/**
* Created by Ms
* --WebView实体类--
*/
data class WebData(
val url: String,
val name: String
): Serializable
第三步 添加布局
<WebView
android:id="@+id/wb"
android:layout_width="match_parent"
android:layout_height="match_parent">
</WebView>
第四步 也是最关键的,关联框架使用
package com.moer.xchealthapp.view.activity
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.view.KeyEvent
import android.view.View
import android.widget.LinearLayout
import androidx.core.content.ContextCompat
import com.just.agentweb.AgentWeb
import com.just.agentweb.DefaultWebClient
import com.moer.xchealthapp.R
import com.moer.xchealthapp.base.BaseActivity
import com.moer.xchealthapp.model.bean.WebData
import kotlinx.android.synthetic.main.a_webview.*
/*
* Created by Ms on 2021-10-28
* 公共-WebView-传入url即可
*/
class MainWbActivity : BaseActivity() {
override val layout = R.layout.a_webview
private lateinit var mAgentWeb: AgentWeb
private lateinit var webData: WebData
companion object {
fun start(context: Context, data: WebData) {
val intent = Intent(context, MainWbActivity::class.java)
val bundle = Bundle()
bundle.putSerializable("data", data)
intent.putExtras(bundle)
context.startActivity(intent)
}
}
override fun initView() {
initTitle(webData.name, true, "")
mAgentWeb = AgentWeb.with(this)
.setAgentWebParent(wb, LinearLayout.LayoutParams(-1, -1))
.useDefaultIndicator(ContextCompat.getColor(this, R.color.blue))
.setSecurityType(AgentWeb.SecurityType.STRICT_CHECK)
.setOpenOtherPageWays(DefaultWebClient.OpenOtherPageWays.ASK)//打开其他应用时,弹窗咨询用户是否前往其他应用
.createAgentWeb()
.ready()
.go(webData.url)
.clearWebCache()
//设置自适应屏幕,两者合用
mAgentWeb.agentWebSettings.webSettings.useWideViewPort = true //将图片调整到适合webview的大小
mAgentWeb.agentWebSettings.webSettings.loadWithOverviewMode = true // 缩放至屏幕的大小
mAgentWeb.agentWebSettings.webSettings.builtInZoomControls=true//支持缩放
mAgentWeb.agentWebSettings.webSettings.displayZoomControls=false//去除缩放图标
//mAgentWeb.agentWebSettings.webSettings.blockNetworkImage=true//网络显示失败
}
override fun initIntent() {
webData = intent.getSerializableExtra("data") as WebData
}
override fun initEvent() {
mAgentWeb.webCreator.webView.setOnKeyListener(object : View.OnKeyListener {
override fun onKey(view: View, keyCode: Int, event: KeyEvent): Boolean {
if (event.action == KeyEvent.ACTION_DOWN) {
if (keyCode == KeyEvent.KEYCODE_BACK && mAgentWeb.webCreator.webView.canGoBack()) { // 表示按返回键时的操作
mAgentWeb.webCreator.webView.goBack() // 后退
// webview.goForward();//前进
return true // 已处理
} else if (keyCode == KeyEvent.KEYCODE_BACK) {
//这里是直接退出
finish()
// getActivity().moveTaskToBack(true);
}
}
return false
}
})
}
}
第五步 直接调取
MainWbActivity.start(this, WebData(url, "标题"))