盒子
盒子
文章目录
  1. WebView的封装
  2. 疑问

WebView的使用

WebView的封装

源码应用:

WebBrower

  • public WebViewWidget(Context context)
  • 实例化WebViewWidget,自动完成setWebViewClient(new WebViewClient()和setWebChromeClient(new WebChromeClient()的基本方法重写工作

  • setWebView(WebViewWidget webView,RelativeLayout container)
  • 初始化WebViewWidget,设置默认值,并把WebView添加到布局视图中

    WebViewWidget的对象

    WebView的布局容器

  • public void setHome(String[] urls)
  • 设置主页,注意传入的参数为字符串数组,所以支持多个主页设定

  • public void setCache(int domOrData)
  • 设置缓存方式

    缓存类型,有以下几种

    1
    2
    3
    public static final int CACHE_DOM_STORAGE=1;
    public static final int CACHE_DATABASE_STORAGE=2;
    public static final int CACHE_DATABASE_DOM_STORAGE=3;

  • public String getTitle()
  • 获取当前页面标题

  • public void setFullView(View[] customView)
  • 设置是否具备全屏功能

    若全屏需要隐藏的组件

  • public void load(String url)
  • 加载网页

  • destroyWebView(WebViewWidget webViewWidget)
  • 彻底销毁WebView,记得在不需要WebView的时候调用,该方法可以彻底销毁

  • setZoom(boolean isZoom,boolean controller)
  • 设置是否支持缩放,是否存在缩放按钮

  • setAdapteScrean(boolean isAdapte)
  • 是否支持屏幕适配

  • setJsEnable(boolean isEnable)
  • 是否支持js

  • void useDefaultLoadingView(boolean useLoadingView)
  • 是否使用封装好的默认加载动画

    以上很多方法已在封装的时候默认设置的了,可不做设置

    以下代码调用便可以得到一个可以直接使用的WebView:

    1
    2
    3
    4
    5
    webView=new WebViewWidget(this);
    webView.setWebView(webView,webViewContainer);
    webView.setHome(homeUrls);
    webView.useDefaultLoadingView(true);
    webView.load(HOME_URL);

  • Webview加载网页时出现NET::ERR_CACHE_MISS
  • 没有加网络访问权限:

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

  • android.view.InflateException: Binary XML file line #19: Binary XML file lin
  • 封装重写WebView时没有重写其默认构造方法:

    1
    2
    3
    public WebViewWidget(Context context, AttributeSet attrs) {
    super(context, attrs);
    }

    疑问

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    final AbsoluteSizeSpan absoluteSizeSpan=new AbsoluteSizeSpan(300);
    new Thread(new Runnable() {
    @Override
    public void run() {
    while(true){
    try {
    Thread.sleep(1000);
    builder.setSpan(absoluteSizeSpan,p,p+1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    ++p;
    if(p==str.length())
    p=0;
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }
    }).start();

    这样写字体变大后会恢复原有大小,但:

    1
    builder.setSpan(new AbsoluteSizeSpan(300),p,p+1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

    就不会恢复大小

    支持一下
    扫一扫,支持Grooter
    • 微信扫一扫
    • 支付宝扫一扫