监听webview显示完毕事件

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">   项目中有这样一个需求:打开某份邮件,在邮件下载显示完毕后对正文中插入的图片加密;再次打开邮件先解密,保证邮件正文中的图片可以正常显示,在此之后再次加密,避免用户直接在rom中打开图片</span>

  写了一个demo,思路是webview加载数据,显示完毕后对图片加密,下次加载数据前解密,显示完毕后再次加密

  闲话少叙,上代码:

  重写WebView,命名为MyWebView.java

  

package com.itheima38.demo;

import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.util.Log;
import android.webkit.WebView;

public class MyWebView extends WebView{
	private boolean isRendered = false;
	interface DisplayFinish{
		void After();
	}
	DisplayFinish df;
	public void setDf(DisplayFinish df) {
		this.df = df;
	}
	public MyWebView(Context context, AttributeSet attrs) {
		super(context, attrs);
	}
	public MyWebView(Context context) {
		super(context);
	}
	//onDraw表示显示完毕
	@Override
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		if(!isRendered && null!=df && getContentHeight()>0)
		{
	      Log.d("MyWebView", "getContentHeight():"+getContentHeight());
	      df.After();
	      isRendered = true;
		}
	}
}

  act_b.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"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <!-- <Button
        android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="b1" />

    <Button
        android:id="@+id/btn2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="b2" />

    <Button
        android:id="@+id/btn3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="b3" /> -->
        
        <com.itheima38.demo.MyWebView
            android:id="@+id/my_webview"
            android:layout_width="match_parent"
            android:layout_height="300dp"
            android:layout_marginTop="200dp" />

</LinearLayout>

  ActB.java

package com.itheima38.demo;

import com.itheima38.demo.MyWebView.DisplayFinish;
import com.itheima38.demo.R;

import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.Toast;

public class ActB extends Activity
{
	private Button btn1;
	private Button btn2;
	private Button btn3;
	private MyWebView myWebView;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.act_b);
		//======网页显示完毕
		myWebView = (MyWebView)findViewById(R.id.my_webview);
		myWebView.setWebViewClient(new WebViewClient(){
			@Override
			public boolean shouldOverrideUrlLoading(WebView view, String url) {
				view.loadUrl(url);
				return true;
			}
			
			@Override
			public void onPageFinished(WebView view, String url) {
				// TODO Auto-generated method stub
				super.onPageFinished(view, url);
				myWebView.setDf(new DisplayFinish(){
				   	@Override
					public void After()
				   		System.out.println("页面显示完毕");
				   		//图片加密
				   	}
				});
			}
		});
		String baseUrl = Environment.getExternalStorageDirectory().getAbsolutePath() + "/abc/";
		System.out.println("baseUrl="+baseUrl);// baseUrl=/storage/emulated/0/abc/
		String data = "<html><head><title>test</title></head><body>白日依山尽<br />黄河入海流<br />欲穷千里目<br />更上一层楼<br /><img src='file://"+baseUrl+"test.png' /></body></html>";
		myWebView.loadDataWithBaseURL(baseUrl, data, "text/html", "utf-8", null);
	}

}

猜你喜欢

转载自blog.csdn.net/johnyin2015/article/details/51619910