Android开发如何使用WebView打造web app
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要为大家展示了"Android开发如何使用WebView打造web app",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Android开发如何使
千家信息网最后更新 2025年01月20日Android开发如何使用WebView打造web app
这篇文章主要为大家展示了"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(); } /** * 初始化WebView容器 */ 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"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
对话框
对话
内容
进度
支持
开发
篇文章
图片
按钮
方法
网页
处理
学习
帮助
不用
事件
代码
再次
圆圈
实例
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
mysql8.0新建数据库
国家对大学生网络安全的政策
电脑网络无法显示共享服务器
武汉工程大学网络技术挑战赛
关于互联网科技的小说
我的世界电脑版ac服务器
软件开发保险公司与银行
网络安全课程实验系统设计
阿里云数据库中奖
超凡巅峰如何更换服务器
数据库历史这么查询
微软软件开发面试题
方城客户管理软件开发
天龙八部最早公测服务器
网络安全发现报告和处置流程
深圳社交直播软件开发
数据库名称加横杠
杭州编程软件开发价格
普陀区游戏软件开发项目
北京ibm服务器回收价钱
国产服务器上市公司有哪些
尖刀下载软件开发
网络安全大赛什么时候开始的
肇庆手机软件开发公司
吴江区创新软件开发流程
软件开发过程时间管理
中国移动公安网络安全
网络安全拓扑图如何绘制
用服务器做迷你世界
临沂bim大型数据库