文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android开发如何使用WebView打造web app

2023-06-29 09:35

关注

这篇文章主要为大家展示了“Android开发如何使用WebView打造web app”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android开发如何使用WebView打造web app”这篇文章吧。

代码如下

public class MainActivity extends Activity{    private WebView webview;    private Handler handler;    private ProgressDialog pd;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        initWebView();    }        public void initWebView() {        //实例化WebView对象        webview = new WebView(this);        handler = new Handler() {            public void handleMessage(Message msg) {//定义一个Handler,用于处理下载线程与UI间通讯                if (!Thread.currentThread().isInterrupted()) {                    switch (msg.what) {                        case 0:                            pd.show();//显示进度对话框                            break;                        case 1:                            pd.hide();//隐藏进度对话框,不可使用dismiss()、cancel(),否则再次调用show()时,显示的对话框小圆圈不会动。                            break;                    }                }                super.handleMessage(msg);            }        };        //设置WebViewClient        webview.setWebViewClient(new WebViewClient() {            @Override            public boolean shouldOverrideUrlLoading(WebView view, String url) {                view.loadUrl(url);                return true;//如果不需要其他对点击链接事件的处理返回true,否则返回false            }            @Override            public void onPageFinished(WebView view, String url) {                if (!webview.getSettings().getLoadsImagesAutomatically()) {                    webview.getSettings().setLoadsImagesAutomatically(true);                }            }        });        webview.setWebChromeClient(new WebChromeClient() {            @Override            public void onProgressChanged(WebView view, int progress) {                pd.setMessage("数据载入中("+progress+"%),请稍候!");                if (progress == 100) {                    handler.sendEmptyMessage(1);//如果全部载入,隐藏进度对话框                }                MainActivity.this.setProgress(progress);            }        });        pd = new ProgressDialog(MainActivity.this);        pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);        handler.sendEmptyMessage(0);        WebSettings webSettings = webview.getSettings();        webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//优先使用缓存的内容        webSettings.setUseWideViewPort(true);//设定支持网页viewport        webSettings.setJavaScriptEnabled(true);//设置WebView属性,能够执行Javascript脚本//        webSettings.setSupportZoom(true);//支持缩放//        webSettings.setBuiltInZoomControls(true);// 设置显示缩放按钮//        setZoomControlGone(webview);        webSettings.supportMultipleWindows();  //多窗口        webSettings.setJavaScriptCanOpenWindowsAutomatically(true); //支持通过JS打开新窗口        webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);//禁止左右滚动        webview.requestFocusFromTouch();//支持获取手势焦点        webview.setHorizontalScrollBarEnabled(false);//水平不显示滚动条        webview.setVerticalScrollbarOverlay(true);        getWindow().requestFeature(Window.FEATURE_PROGRESS);//设置窗口风格为进度条        //告诉WebView先不要自动加载图片,等页面finish后再发起图片加载        if (Build.VERSION.SDK_INT >= 19) {            webview.getSettings().setLoadsImagesAutomatically(true);        } else {            webview.getSettings().setLoadsImagesAutomatically(false);        }        //加载需要显示的网页        webview.loadUrl("http://www.kailing.pub/juanmei/");        //设置Web视图        setContentView(webview);    }    //实现放大缩小控件隐藏    public void setZoomControlGone(View view) {        Class classType;        Field field;        try {            classType = WebView.class;            field = classType.getDeclaredField("mZoomButtonsController");            field.setAccessible(true);            ZoomButtonsController mZoomButtonsController = new ZoomButtonsController(view);            mZoomButtonsController.getZoomControls().setVisibility(View.GONE);            try {                field.set(view, mZoomButtonsController);            } catch (IllegalArgumentException e) {                e.printStackTrace();            } catch (IllegalAccessException e) {                e.printStackTrace();            }        } catch (SecurityException e) {            e.printStackTrace();        } catch (NoSuchFieldException e) {            e.printStackTrace();        }    }    //设置回退    //覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法    @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {            webview.goBack();            return true;        } else if (keyCode == KeyEvent.KEYCODE_BACK) {            ConfirmExit();//按了返回键,但已经不能返回,则执行退出确认            return true;        }        return super.onKeyDown(keyCode, event);    }        public void ConfirmExit() {        AlertDialog.Builder ad = new AlertDialog.Builder(MainActivity.this);        ad.setTitle("退出");        ad.setMessage("是否退出娟妹美甲坊?");        ad.setPositiveButton("是", new DialogInterface.OnClickListener() {//退出按钮            @Override            public void onClick(DialogInterface dialog, int i) {                // TODO Auto-generated method stub                MainActivity.this.finish();//关闭activity                System.exit(0);            }        });        ad.setNegativeButton("否", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int i) {                //不退出不用执行任何操作            }        });        ad.show();//显示对话框    }    // 继承GestureListener,重写left和right方法,    private class MyGestureListener extends GestureListener {        public MyGestureListener(Context context) {            super(context);        }        @Override        public boolean left() {            webview.goForward();            return super.left();        }        @Override        public boolean right() {            webview.goBack();            return super.right();        }    }}

以上是“Android开发如何使用WebView打造web app”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯