这篇文章主要为大家展示了“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”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。