Android利用AsyncTask异步类实现网页内容放大缩小

所属分类: 软件编程 / Android 阅读数: 1113
收藏 0 赞 0 分享

本文实例为大家分享了AsyncTask异步类实现网页内容放大缩小的详细代码,供大家参考,具体内容如下

WebActivity.java:

package com.supermario.filemanager;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.http.protocol.HTTP;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.RelativeLayout;
import android.widget.ZoomControls;
public class WebActivity extends Activity {
 //网页浏览器
 private WebView webView;
 //进度条布局和网页内容主体布局
 private RelativeLayout loadingLayout,webLayout;
 //放大缩小控制器
 private ZoomControls zoomControls; 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.web);
 //初始化页面组件
 webView = (WebView)findViewById(R.id.webkit);
 loadingLayout = (RelativeLayout)findViewById(R.id.loadingLayout);
 webLayout = (RelativeLayout)findViewById(R.id.weblayout);
 zoomControls = (ZoomControls)findViewById(R.id.zoomControls); 
 WebSettings webSettings = webView.getSettings();
 //设置可以使用js脚本
 webSettings.setJavaScriptEnabled(true);
 //执行异步进程
 new MyAsyncTask().execute(""); 
 }
 private void reading(){
 String filePath = getIntent().getStringExtra("filePath");
 if (filePath != null) {
  //读取文件
  webView.loadData(readWebDataToStringFromPath(filePath, new FileReadOverBack() {
  @Override
  public void fileReadOver() {
  }
  }), "text/html", HTTP.UTF_8);
 } else {
  new AlertDialog.Builder(WebActivity.this).setTitle("出错了").setMessage("获取文件路径出错!").setPositiveButton("返回", new OnClickListener() {
  @Override
  public void onClick(DialogInterface dialog, int which) {
   WebActivity.this.finish();
  }
  });
 }
 }
 //将网页数据读取到一个字符串变量中
 private String readWebDataToStringFromPath(String path,final FileReadOverBack fileReadOverBack){
 File file = new File(path);
 StringBuffer stringBuffer = new StringBuffer();
 try {
  //读取文件内容
  FileInputStream inputStream = new FileInputStream(file);
  byte[] bytes = new byte[1024];
  int readCount = 0;
  while ((readCount = inputStream.read(bytes)) > 0) {
  stringBuffer.append(new String(bytes, 0, readCount));
  }
  fileReadOverBack.fileReadOver();
 } catch (FileNotFoundException e) {
  return "文件不存在!";
 } catch (IOException e) {
  return "文件读取错误!";
 }
 return stringBuffer.toString();
 } 
 interface FileReadOverBack{
 void fileReadOver();
 }
 //异步处理类
 class MyAsyncTask extends AsyncTask<String, String, String>{
 //首先执行的函数
 @Override
 protected void onPreExecute() {
  super.onPreExecute();
  loadingLayout.setVisibility(View.VISIBLE);
  webLayout.setVisibility(View.GONE);
 }
 //后台执行
 @Override
 protected String doInBackground(String... params) {
  reading();
  return null;
 } 
 @Override
 protected void onPostExecute(String result) {
  super.onPostExecute(result);
  //设置载入进度条隐藏
  loadingLayout.setVisibility(View.GONE);
  //设置浏览器内容可见
  webLayout.setVisibility(View.VISIBLE);  
  // 放大按钮
  zoomControls.setOnZoomInClickListener(new View.OnClickListener() {
  //将网页内容放大
  @Override
  public void onClick(View v) {
   webView.zoomIn();
  }
  });
  // 缩小按钮
  zoomControls.setOnZoomOutClickListener(new View.OnClickListener() { 
  //将网页内容缩小
  @Override
  public void onClick(View v) {
   webView.zoomOut();
  }
  });
 } 
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

Android设计登录界面、找回密码、注册功能

这篇文章主要为大家详细介绍了Android设计登录界面的方法,Android实现找回密码、注册功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android通过手势实现答题器翻页效果

这篇文章主要为大家详细介绍了Android通过手势实现答题器翻页效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android采用双缓冲技术实现画板

这篇文章主要为大家详细介绍了Android采用双缓冲技术实现画板的相关资料,思路清晰,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android开发之毛玻璃效果实例代码

这篇文章主要给大家分享android开发之毛玻璃效果的实例代码,非常具有参考借鉴价值,感兴趣的朋友一起学习吧
收藏 0 赞 0 分享

Android实现桌面悬浮窗、蒙板效果实例代码

这篇文章主要介绍了Android实现桌面悬浮窗、蒙板效果实例代码的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

深入解读Android的Volley库的功能结构

这篇文章主要介绍了Android的Volley开发框架的功能结构,Volley是Android开发中网络部分的一大利器,包含很多HTTP协议通信的相关操作,需要的朋友可以参考下
收藏 0 赞 0 分享

Android开发中使用Volley库发送HTTP请求的实例教程

这篇文章主要介绍了Android开发中使用Volley库发送HTTP请求的实例教程,包括创建Volley单例的基本知识与取消Request请求的技巧等,需要的朋友可以参考下
收藏 0 赞 0 分享

Android仿QQ聊天撒花特效 很真实

本文写的这个特效,是关于聊天的,你肯定遇到过,就是你跟人家聊天的时候,比如发送应(么么哒),然后屏幕上全部就是表情了,今天我们就是做这个,撒花的特效,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android的HTTP操作库Volley的基本使用教程

这篇文章主要介绍了Android的HTTP操作库Volley的基本使用教程,包括JSON请求与图片加载等用法的实例,需要的朋友可以参考下
收藏 0 赞 0 分享

Android仿水波纹流量球进度条控制器

这篇文章主要介绍了Android仿水波纹流量球进度条控制器的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享
查看更多