android怎样实现顶部标题栏+webView 效果
一、webView网络访问
1.在AndroidManifest.xml中添加
//网络权限,当禁用后,无法进行检索等相关业务 <uses-permission android:name="android.permission.INTERNET" />
2.在界面xml文件中添加
<!--显示网页区域--> <WebView android:id="@+id/webView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginTop="10dp" />
界面中显示图像
3.在Activity布局中添加,以访问网络为例
二、添加顶部标题栏
1.重要:
当 android:orientation=”vertical” 时, 只有水平方向的设置才起作用,垂直方向的设置不起作用。即:left,right,center_horizontal 是生效的。
当 android:orientation=”horizontal” 时, 只有垂直方向的设置才起作用,水平方向的设置不起作用。即:top,bottom,center_vertical 是生效的。
2.添加控件
ok
三、拓展
1.使用WebView基本都会使用这两个类:WebViewClient与WebChromeClient
WebViewClient与WebChromeClient区别:
WebViewClient主要帮助WebView处理各种通知、请求事件的,有以下常用方法:
- onPageFinished 页面请求完成
- onPageStarted 页面开始加载
- shouldOverrideUrlLoading 拦截url
- onReceivedError 访问错误时回调,例如访问网页时报错404,在这个方法回调的时候可以加载错误页面。
onPageStarted()onPageFinished():页面加载时和页面加载完毕时调用。
shouldOverrideKeyEvent():重写此方法才能处理浏览器中的按键事件。
shouldInterceptRequest():页面每一次请求资源之前都会调用这个方法(非UI线程调用)。
onLoadResource():页面加载资源时调用,每加载一个资源(比如图片)就调用一次。
onReceivedError():加载页面的服务器出现错误(比如404)时回调。
onReceivedSslError():重写此方法可以让webview处理https请求。
doUpdateVisitedHistory():更新历史记录。
onFormResubmission():应用程序重新请求网页数据。
onReceivedHttpAuthRequest():获取返回信息授权请求。
onScaleChanged():WebView发生缩放改变时调用。onUnhandledKeyEvent():Key事件未被加载时调用。
WebChromeClient主要辅助WebView处理Javascript的对话框、网站图标、网站title、加载进度等,有以下常用方法。
- onJsAlert webview不支持js的alert弹窗,需要自己监听然后通过dialog弹窗
- onReceivedTitle 获取网页标题
- onReceivedIcon 获取网页icon
- onProgressChanged 加载进度回调
2.WebView 常用方法
- void loadUrl(String url):加载网络链接 url
- boolean canGoBack():判断 WebView 当前是否可以返回上一页
- goBack():回退到上一页
- boolean canGoForward():判断 WebView 当前是否可以向前一页
- goForward():回退到前一页
- onPause():类似 Activity 生命周期,页面进入后台不可见状态
- pauseTimers():该方法面向全局整个应用程序的webview,它会暂停所有webview的layout,parsing,JavaScript Timer。当程序进入后台时,该方法的调用可以降低CPU功耗。
- onResume():在调用 onPause()后,可以调用该方法来恢复 WebView 的运行。
- resumeTimers():恢复pauseTimers时的所有操作。(注:pauseTimers和resumeTimers 方法必须一起使用,否则再使用其它场景下的 WebView 会有问题)
- destroy():销毁 WebView
- clearHistory():清除当前 WebView 访问的历史记录。
- clearCache(boolean includeDiskFiles):清空网页访问留下的缓存数据。需要注意的时,由于缓存是全局的,所以只要是WebView用到的缓存都会被清空,即便其他地方也会使用到。该方法接受一个参数,从命名即可看出作用。若设为false,则只清空内存里的资源缓存,而不清空磁盘里的。
- reload():重新加载当前请求
- setLayerType(int layerType, Paint paint):设置硬件加速、软件加速
- removeAllViews():清除子view。
- clearSslPreferences():清除ssl信息。
- clearMatches():清除网页查找的高亮匹配字符。
- removeJavascriptInterface(String interfaceName):删除interfaceName 对应的注入对象
- addJavascriptInterface(Object object,String interfaceName):注入 java 对象。
- setVerticalScrollBarEnabled(boolean verticalScrollBarEnabled):设置垂直方向滚动条。
- setHorizontalScrollBarEnabled(boolean horizontalScrollBarEnabled):设置横向滚动条。
- loadUrl(String url, Map<String, String> additionalHttpHeaders):加载制定url并携带http header数据。
- evaluateJavascript(String script, ValueCallback<String> resultCallback):Api 19 之后可以采用此方法之行 Js。
- stopLoading():停止 WebView 当前加载。
- clearView():在Android 4.3及其以上系统这个api被丢弃了, 并且这个api大多数情况下会有bug,经常不能清除掉之前的渲染数据。官方建议通过loadUrl("about:blank")来实现这个功能,阴雨需要重新加载一个页面自然时间会收到影响。
- freeMemory():释放内存,不过貌似不好用。
- clearFormData():清除自动完成填充的表单数据。需要注意的是,该方法仅仅清除当前表单域自动完成填充的表单数据,并不会清除WebView存储到本地的数据。
3.webview如何打开其它的页面
https://blog.csdn.net/yushuangping/article/details/84076222
4.WebView清除本地cookies
/***
* 如果用户已经登录,则同步本地的cookie到webview中
*/
public void synCookies() {
if (!CacheUtils.isLogin(this)) return;
CookieSyncManager.createInstance(this);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.removeSessionCookie();//移除
String cookies = PreferenceHelper.readString(this, AppConfig.COOKIE_KEY, AppConfig.COOKIE_KEY);
KJLoger.debug(cookies);
cookieManager.setCookie(url, cookies);
CookieSyncManager.getInstance().sync();
}
上一篇: 使用css_html/css_WEB-ITnose
下一篇: PHP rewrite后CSS式样丢失
推荐阅读
-
Android自定义实现顶部粘性下拉刷新效果
-
Android实现顶部导航栏可点击可滑动效果(仿微信仿豆瓣网)
-
Android实现弹出输入法时顶部固定中间部分上移的效果
-
Android模仿实现微博详情页滑动固定顶部栏的效果实例
-
Android编程实现webview执行loadUrl时隐藏键盘的workround效果
-
Android 顶部标题栏随滑动时的渐变隐藏和渐变显示效果
-
学习使用Material Design控件(四)Android实现标题栏自动缩放、放大效果
-
Android 使用CoordinatorLayout实现滚动标题栏效果的实例
-
Android Support Library 标题栏(Toolbar)滚动效果实现方法
-
Android实现弹出输入法时顶部固定中间部分上移的效果