Android利用AsyncTask異步類實(shí)現(xiàn)網(wǎng)頁(yè)內(nèi)容放大縮小
本文實(shí)例為大家分享了AsyncTask異步類實(shí)現(xiàn)網(wǎng)頁(yè)內(nèi)容放大縮小的詳細(xì)代碼,供大家參考,具體內(nèi)容如下
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 {
//網(wǎng)頁(yè)瀏覽器
private WebView webView;
//進(jìn)度條布局和網(wǎng)頁(yè)內(nèi)容主體布局
private RelativeLayout loadingLayout,webLayout;
//放大縮小控制器
private ZoomControls zoomControls;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.web);
//初始化頁(yè)面組件
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();
//設(shè)置可以使用js腳本
webSettings.setJavaScriptEnabled(true);
//執(zhí)行異步進(jìn)程
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("出錯(cuò)了").setMessage("獲取文件路徑出錯(cuò)!").setPositiveButton("返回", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
WebActivity.this.finish();
}
});
}
}
//將網(wǎng)頁(yè)數(shù)據(jù)讀取到一個(gè)字符串變量中
private String readWebDataToStringFromPath(String path,final FileReadOverBack fileReadOverBack){
File file = new File(path);
StringBuffer stringBuffer = new StringBuffer();
try {
//讀取文件內(nèi)容
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 "文件讀取錯(cuò)誤!";
}
return stringBuffer.toString();
}
interface FileReadOverBack{
void fileReadOver();
}
//異步處理類
class MyAsyncTask extends AsyncTask<String, String, String>{
//首先執(zhí)行的函數(shù)
@Override
protected void onPreExecute() {
super.onPreExecute();
loadingLayout.setVisibility(View.VISIBLE);
webLayout.setVisibility(View.GONE);
}
//后臺(tái)執(zhí)行
@Override
protected String doInBackground(String... params) {
reading();
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
//設(shè)置載入進(jìn)度條隱藏
loadingLayout.setVisibility(View.GONE);
//設(shè)置瀏覽器內(nèi)容可見(jiàn)
webLayout.setVisibility(View.VISIBLE);
// 放大按鈕
zoomControls.setOnZoomInClickListener(new View.OnClickListener() {
//將網(wǎng)頁(yè)內(nèi)容放大
@Override
public void onClick(View v) {
webView.zoomIn();
}
});
// 縮小按鈕
zoomControls.setOnZoomOutClickListener(new View.OnClickListener() {
//將網(wǎng)頁(yè)內(nèi)容縮小
@Override
public void onClick(View v) {
webView.zoomOut();
}
});
}
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 詳解Android中AsyncTask的使用方法
- Android 中糟糕的AsyncTask
- Android中通過(guò)AsyncTask類來(lái)制作炫酷進(jìn)度條的實(shí)例教程
- 詳解Android App中的AsyncTask異步任務(wù)執(zhí)行方式
- Android使用AsyncTask實(shí)現(xiàn)多線程下載的方法
- Android中AsyncTask異步任務(wù)使用詳細(xì)實(shí)例(一)
- Android 中使用 AsyncTask 異步讀取網(wǎng)絡(luò)圖片
- 詳解Android中AsyncTask機(jī)制
- Android通過(guò)Handler與AsyncTask兩種方式動(dòng)態(tài)更新ListView(附源碼)
- Android中AsyncTask與handler用法實(shí)例分析
- Android AsyncTask 后監(jiān)聽(tīng)異步加載完畢的動(dòng)作詳解
相關(guān)文章
Android SQLite事務(wù)處理結(jié)合Listview列表顯示功能示例
這篇文章主要介紹了Android SQLite事務(wù)處理結(jié)合Listview列表顯示功能,較為詳細(xì)的分析了Android使用sqlite數(shù)據(jù)庫(kù)進(jìn)行事務(wù)操作并結(jié)合Listview進(jìn)行列表顯示的相關(guān)操作技巧,需要的朋友可以參考下2017-07-07
Jetpack?Compose入門(mén)基礎(chǔ)全面精講
開(kāi)始布局部分。這部分我個(gè)人感覺(jué)沒(méi)有必要每個(gè)組件、屬性都詳細(xì)說(shuō)到,否則篇幅會(huì)很長(zhǎng)。建立起Compose中的組件與?Android?Views的一個(gè)對(duì)應(yīng)關(guān)系就夠了。具體還是需要在實(shí)際的使用中去熟悉2022-10-10
Android ListView 單條刷新方法實(shí)踐及原理解析
這篇文章主要介紹了Android ListView 單條刷新方法實(shí)踐及原理解析的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07
Android進(jìn)階NestedScroll嵌套滑動(dòng)機(jī)制實(shí)現(xiàn)吸頂效果詳解
這篇文章主要為大家介紹了Android進(jìn)階NestedScroll嵌套滑動(dòng)機(jī)制實(shí)現(xiàn)吸頂效果詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
unity5.6 導(dǎo)出gradle工程 Android Studio 導(dǎo)入問(wèn)題及處理方法
這篇文章主要介紹了unity5.6 導(dǎo)出gradle工程 Android Studio 導(dǎo)入問(wèn)題及處理方法,需要的朋友可以參考下2017-12-12
android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(移動(dòng)端)
本篇文章主要介紹了微信小程序-閱讀小程序?qū)嵗╠emo),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望能給你們提供幫助2021-06-06
Android9?雙屏異顯實(shí)現(xiàn)方式思路
這篇文章主要為大家介紹了Android9?雙屏異顯實(shí)現(xiàn)方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06

