Android中WebView拿到当前的网址和上一页面的网址
来源:互联网 发布:nodejs php 网站 编辑:程序博客网 时间:2024/06/03 13:56
项目结构:
代码:
MainActivity
package com.zhh.mytestwebview;import android.app.Activity;import android.content.Context;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import android.webkit.WebBackForwardList;import android.webkit.WebChromeClient;import android.webkit.WebHistoryItem;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.LinearLayout;import android.widget.ProgressBar;import android.widget.RelativeLayout;public class MainActivity extends Activity { private WebView wvShowDetails; private ProgressBar pbComplete; // 比分直播 private String rootUrl = "http://m.zhcw.com/zixun/live.jsp?type=sp"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); wvShowDetails = findViewById(R.id.wvShowDetails); pbComplete = findViewById(R.id.pbComplete); setWebView(rootUrl); myOnclick(); } /** * 加载webView的方法 */ private void setWebView(String url) { // 对webView的设置 WebSettings webSettings = wvShowDetails.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setUseWideViewPort(true); webSettings.setLoadWithOverviewMode(true); // 设置进度条 wvShowDetails.setWebChromeClient(new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { super.onProgressChanged(view, newProgress); if (newProgress == 100) { pbComplete.setVisibility(View.INVISIBLE); } else { if (View.INVISIBLE == pbComplete.getVisibility()) { pbComplete.setVisibility(View.VISIBLE); } pbComplete.setProgress(newProgress); } } }); /** * 拿到当前页面的路径 */ wvShowDetails.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) {// 当前的路径穿进去处理 isTitleChange(url); return super.shouldOverrideUrlLoading(view, url); } }); wvShowDetails.loadUrl(url); } private void myOnclick(){// 监听返回键 wvShowDetails.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent keyEvent) { if ((keyCode == KeyEvent.KEYCODE_BACK) && wvShowDetails.canGoBack()) { if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) { //只处理一次 myLastUrl(); } return true; } return false; } }); } /** * 拿到上一页的路径 */ private void myLastUrl(){ WebBackForwardList backForwardList = wvShowDetails.copyBackForwardList(); if (backForwardList != null && backForwardList.getSize() != 0) { //当前页面在历史队列中的位置 int currentIndex = backForwardList.getCurrentIndex(); WebHistoryItem historyItem = backForwardList.getItemAtIndex(currentIndex - 1); if (historyItem != null) { String backPageUrl = historyItem.getUrl();// Logger.t("111").d("拿到返回上一页的url"+backPageUrl); wvShowDetails.goBack();// 重新判断设置标题 isTitleChange(backPageUrl); } } } /** * 判断标题是否改变 */ private void isTitleChange(String url){ String myurl="type=sp"; if(url.contains(myurl)) {// 包含说明是内页 LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); int top=dip2px(this,-35f); lp.setMargins(0,top,0,0); wvShowDetails.setLayoutParams(lp); }else{// 不包含说明是外面页 LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); lp.setMargins(0,0,0,0); wvShowDetails.setLayoutParams(lp); } } /** * 根据手机的分辨率从 dp 的单位 转成为 px(像素) */ public static int dip2px(Context context, float dpValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f); }}activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" tools:context="com.zhh.mytestwebview.MainActivity" android:orientation="vertical" > <ProgressBar android:id="@+id/pbComplete" style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="2dp" android:layout_alignParentBottom="true" android:progressDrawable="@drawable/progressbar" /> <WebView android:id="@+id/wvShowDetails" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FF33FF" android:layout_marginTop="-35dp" > </WebView></LinearLayout>开网络权限:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>源码下载:
http://download.csdn.net/download/zhaihaohao1/10151527
阅读全文
0 0
- Android中WebView拿到当前的网址和上一页面的网址
- 在C#中获取上一页的网址
- 要对比来源网址和当前网址的区别
- Android返回上一页面的方式
- android中加载webview自定义的返回键具有返回上一页的功能
- Android之获取WebView所加载网址网站的源码
- Android开发WebView加载自签名认证的https网址
- Android WebView无法返回上一页的问题。
- Android source 的网址 及 学习网址
- android学习的网址
- 网址中#的作用
- android中对json的解析网址
- android学习中一些有价值的网址
- android中uri/网址的识别方法
- android学习好的博客和网址
- android开发中如何从当前页面返回上一页面
- webview 去掉电话,网址的跳转效果
- WebView返回上一页的实现
- Thinkphp使用
- 面经-美团点评-离线大数据平台-Hadoop研发
- JAVA爬取学校教务处课表
- android opengl es 总结
- [知了堂学习笔记] javascript BOM
- Android中WebView拿到当前的网址和上一页面的网址
- 使用Caffe对摄像机视频流中的目标进行识别
- libvirt 问题解决记录集
- CUDA并行排序(1)——双调排序(unsigned int型数据)
- Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码)
- 支付宝和微信支付时的MD5加密
- 语音的基本概念--译自CMU sphinx
- ajax form表单提交 input file中的文件
- 微信公众号开发(三)前端界面