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安全错误
数据库的锁怎样保障安全
软件开发超枯燥
中学生法制展馆软件开发
数据库自增长10w条数据
农村网络安全教育平台
韩服服务器排名
深圳智能照明软件开发价位
微商软件开发公司哪家好
数据库图书借阅管理系统免费
对于阿里云上的网络安全防护
读秀数据库中文献传递
服务器防入侵
顺丰科技算是互联网公司吗
做ogg需要停源数据库吗
普洱服务器租用公司
服务器需要关机休息
杭州麦苗网络技术上市
微服务器推荐
浅谈办公自动化网络安全绪论
河北戴尔服务器虚拟化迁移
华为网络安全个人数据匿名化
方舟生存怎么转服务器
5g是属于网络技术吗
网络安全法考试
沂蒙山民宿软件开发
服务器连接超时导致收件中断
网络安全最核心的要素是
数据库面试经验
国产服务器主机品牌主要有
设置的位置服务器
app电商软件开发费用