一个特别好用的公共WebView

我们在开发中经常遇到跳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, "标题"))
注意:解释下第四步,我是引用的我自己写的公共类BaseActivity ,而且我在返回键做了一个优化处理,关于WebView的更多属性,小伙伴们可以根据自己的需要自行调试
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值