Android开发如何使用WebView打造web app
发表于:2024-11-17 作者:千家信息网编辑
千家信息网最后更新 2024年11月17日,这篇文章主要为大家展示了"Android开发如何使用WebView打造web app",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Android开发如何使
千家信息网最后更新 2024年11月17日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安全错误
数据库的锁怎样保障安全
网络安全漫画
axure 服务器素材
闵行软件开发培训班
增值税上的软件开发
计算机网络安全可以通过以下
如何完善网络安全法律法规
易语言服务器与客户端
瓦洛兰特服务器ap
南沙区软件开发技校技工
扬州网络安全应用
数据库实时流计算场景
桓台工资管理oa软件开发公司
双网卡连数据库
市面常见数据库
国家网络安全承办
信息网络安全整改方案
国家三级网络技术大题解析
sqlyog 导出数据库
网络安全宣传网络平台
360儿童网络安全教育
cmcc这样的网络安全吗
深圳微达网络技术销售产品
漯河软件开发公司刘晓响总监
命令与征服3单位数据库
服务器MCIO接口
移动有宽带服务器吗
广州市福盈网络技术有限公司
天津慕橙互联网科技
北京软件开发者一般多少钱
windows搭建代理服务器