• [android] WebView自定义浏览器


    在布局文件中添加<EditText/><Button/>控件,

    在布局文件中添加<WebView/>控件

    Activity中获取WebView对象

    调用WebView对象的loadUrl()方法,参数:String路径

    添加访问网络的权限android.permission.INTERNET

    调用WebView对象的getSettings()方法,获取到WebSettings设置对象

    调用WebSettings对象的setSupportZoom()方法,设置支持缩放,参数:布尔值

    调用WebSettings对象的setBuiltInZoomControls(),设置缩放控件,参数:布尔值、

    调用WebView对象的setWebViewClient()方法,设置客户端防止链接打开系统浏览器,参数:WebViewClient对象

    监听后退键,返回上一界面

    重写ActivityonKeyDown()方法,参数传递进来int键盘码,KeyEvent对象

    如果键盘码等于KeyEvent.KEYCODE_BACK并且当前WebView对象有很多页能后退,调用WebView对象的canGoBack()方法

    调用WebView对象的goBack()方法,页面后退

    设置菜单键,重写onCreateOptionsMenu()方法,传递进来Menu对象

    调用Menu对象的addSubMenu()方法,添加菜单,参数:组id,条目id,排序,标题

    添加刷新,后退,前进

    监听小菜单点击事件

    重写onOptionsItemSelected()方法,传递进来MenuItem对象

    switch判断一下MenuItem对象的getOrder(),对应上面的排序

    页面刷新,调用WebView对象的reload()方法

    页面后退,先调用WebView对象的canGoBack()方法,判断是否能后退,调用goBack()方法后退

    页面前进,调用WebView对象的canGoForward()方法,判断是否能前进,调用goForward()方法前进

    页面loading

    获取ProgressDialog对象,new出来,参数:上下文

    调用ProgressDialog对象的setMessage()方法,参数:文本

    调用WebView对象的setWebChromeClient()方法,参数:WebViewClient对象,

    匿名内部类继承WebViewClient类,重写onPageStarted()方法和onPageFinshed()方法

    onPageStarted()方法内

    调用ProgressDialog对象的show()方法

    onPageFinshed()方法内

    调用ProgressDialog对象的dismiss()方法

    package com.tsh.mywebview;
    
    import android.app.Activity;
    import android.app.ProgressDialog;
    import android.graphics.Bitmap;
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.Window;
    import android.webkit.WebSettings;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    
    public class MainActivity extends Activity {
        private WebView webview;
        private ProgressDialog pd;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView(R.layout.activity_main);
            
            pd=new ProgressDialog(this);
            pd.setMessage("正在加载...");
            
            
            //webview的简单设置
            webview=(WebView) findViewById(R.id.wv_internet);
            webview.loadUrl("https://www.baidu.com");
            WebSettings websettings=webview.getSettings();
            websettings.setSupportZoom(true);
            websettings.setBuiltInZoomControls(true);
            webview.setWebViewClient(new WebViewClient(){
                @Override
                public void onPageStarted(WebView view, String url, Bitmap favicon) {
                    pd.show();
                }
                @Override
                public void onPageFinished(WebView view, String url) {
                    pd.dismiss();
                }
            });
            
        }
        //后退键
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if(keyCode==KeyEvent.KEYCODE_BACK&&webview.canGoBack()){
                webview.goBack();
                return true;
            }
            return super.onKeyDown(keyCode, event);
        }
        //菜单键
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            menu.add(0, 0, 0, "刷新");
            menu.add(0, 0, 1, "后退");
            menu.add(0, 0, 2, "前进");
            return super.onCreateOptionsMenu(menu);
        }
        //菜单点击事件
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getOrder()) {
            case 0:
                webview.reload();
                break;
            case 1:
                if(webview.canGoBack()){
                    webview.goBack();
                }
                break;
            case 2:
                if(webview.canGoForward()){
                    webview.goForward();
                }
                break;
            }
            return super.onOptionsItemSelected(item);
        }
    
    }
  • 相关阅读:
    机器学习笔记之数据预处理(Python实现)
    机器学习笔记之matplotlib绘图核心原理
    机器学习笔记之Matplotlib库legend() scatter() plot() figure() subplot()函数参数解释
    Kafka学习笔记之kafka常见报错及解决方法(topic类、生产消费类、启动类)
    Elasticsearch学习笔记之Prometheus监控ElasticSearch核心指标
    Kafka学习笔记之Kafka应用问题经验积累
    Kafka学习笔记之kafka.common.KafkaException: Should not set log end offset on partition
    CRM 价格更新
    定时 任务 C# 思路
    使用ExtentReports生成Testng测试报告
  • 原文地址:https://www.cnblogs.com/taoshihan/p/5448873.html
Copyright © 2020-2023  润新知