Android开发---加载h5界面
来源:互联网 发布:java基础 学javascript 编辑:程序博客网 时间:2024/05/18 00:40
首先 布局
只有一个webview 还有一个加载界面时候用的progressbar
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:layerType="hardware" android:orientation="vertical" > <RelativeLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="vertical" > <WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent" android:fadingEdge="none" android:visibility="invisible" android:fadingEdgeLength="0dp" android:scrollbars="none" /> <ProgressBar android:id="@+id/progressBar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" /> </RelativeLayout></LinearLayout>
java代码
public class WebViewActivity extends TitleActivity{ private WebView webview; private ProgressBar progressBar; private ProgressBarHandler mProgressBarHandler = new ProgressBarHandler(this); private String mWebViewUrl; private String mTitle; public static void open(Context context,String url,String title){ Intent intent = new Intent(); intent.setClass(context,WebViewActivity.class); intent.putExtra("webUrl",url); intent.putExtra("title",title); context.startActivity(intent); } @Override protected void setContentView() { setContentView(R.layout.activity_web_view); } @Override protected void bindViews() { ButterKnife.bind(this); } @Override protected void initializeViews() { setLeftInfo(); if (getIntent() != null) { mWebViewUrl = (String) getIntent().getExtras().get("webUrl"); mTitle = (String) getIntent().getExtras().get("title"); setCenterTitle(mTitle); initViews(); } } @Override protected void initializeData() { } private void initViews() { webview = (WebView) findViewById(R.id.webview); progressBar = (ProgressBar) findViewById(R.id.progressBar); WebSettings webSettings = webview.getSettings(); webSettings.setDomStorageEnabled(true); webSettings.setLoadWithOverviewMode(true); webSettings.setUseWideViewPort(true); webSettings.setJavaScriptEnabled(true); webSettings.setCacheMode(WebSettings.LOAD_DEFAULT); webview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); webview.setWebChromeClient(new WebChromeClient() { @Override public boolean onJsAlert(WebView view, String url, String message, JsResult result) { return super.onJsAlert(view, url, message, result); } @Override public boolean onJsConfirm(WebView view, String url, String message, JsResult result) { return super.onJsConfirm(view, url, message, result); } }); webview.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { mProgressBarHandler.sendEmptyMessage(0); super.onPageFinished(view, url); } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { loadUrl(view, url); return true; } }); webview.setBackgroundColor(0); if (BussinessUtil.isValid(mWebViewUrl)){ webview.loadUrl(mWebViewUrl); } } private void loadUrl(final WebView view, final String url) { mProgressBarHandler.sendEmptyMessage(1); view.loadUrl(url); } private static class ProgressBarHandler extends Handler { private final WeakReference<WebViewActivity> mActivity; public ProgressBarHandler(WebViewActivity activity) { mActivity = new WeakReference<>(activity); } @Override public void handleMessage(Message msg) { if (mActivity.get() == null || mActivity.get().isFinishing()) { return; } switch (msg.what) { case 0: if (mActivity.get().progressBar != null && mActivity.get().webview != null) { mActivity.get().progressBar.setVisibility(View.INVISIBLE); mActivity.get().webview.setVisibility(View.VISIBLE); } break; case 1: if (mActivity.get().progressBar != null && mActivity.get().webview != null) { mActivity.get().progressBar.setVisibility(View.VISIBLE); mActivity.get().webview.setVisibility(View.INVISIBLE); } break; } super.handleMessage(msg); } } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && webview != null && webview.canGoBack()) { webview.goBack(); return true; } return super.onKeyDown(keyCode, event); }
最后,使用的时候,只需要调用WebViewActivity中的open方法,然后将h5地址传过来就行
如:
case R.id.llAboutus: WebViewActivity.open(this,"http://static.isudoo.com/pages/aboutus.html","关于我们"); break;
2 0
- Android开发---加载h5界面
- android加载本地asset文件夹下的h5界面
- android webview 加载h5
- 加载H5界面的尺寸约束
- Android+H5混合开发
- Android+H5开发
- Android游戏开发之:加载界面的图片
- Android开发优化—界面UI(3)延迟加载
- QML开发简单浏览器(加载H5)
- Android unity3d 加载界面
- android加载界面
- Android 仿美团加载界面
- android界面加载webview
- 安卓 webview加载h5界面无响应
- webview之加载H5界面无法调用手机本地图库
- WebView加载H5界面后的返回键问题
- android webView加载h5 h5的js代码不执行
- Android WebView H5开发问题
- NestedScrolling 嵌套滑动机制:原理简单分析(二)
- C#预处理器指令
- U盘不能卸载,直接拔掉再插入提示:“目录损坏
- body{display:none}
- 内核新的ioctl方式---- unlocked_ioctl和compat_ioctl
- Android开发---加载h5界面
- 如何对java多源文件编译
- PowerManagerService深入分析
- mysql替换字段中部分字符串
- 代码段、数据段、堆、栈
- 嵌入式 uboot命令及内核启动参数
- C++——字典树(Trie树)模板——统计难题(HDU1251)
- Fiddler监听报错
- window信号量、互斥、自旋锁