Android利用AsyncTask異步類(lèi)實(shí)現(xiàn)網(wǎng)頁(yè)內(nèi)容放大縮小
本文實(shí)例為大家分享了AsyncTask異步類(lèi)實(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(); } //異步處理類(lèi) 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)來(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自定義PasswordInputView密碼輸入
這篇文章主要為大家詳細(xì)介紹了Android自定義PasswordInputView密碼輸入功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08Android自定義有限制區(qū)域的圖例角度自識(shí)別涂鴉工具類(lèi)完結(jié)篇
這篇文章主要為大家介紹了Android自定義有限制區(qū)域的圖例角度自識(shí)別涂鴉工具類(lèi)完結(jié)篇,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02Android實(shí)現(xiàn)新浪微博一鍵分享的實(shí)例代碼
這篇文章主要介紹了Android實(shí)現(xiàn)新浪微博一鍵分享的實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07Android實(shí)現(xiàn)下拉菜單Spinner效果
這篇文章主要介紹了Android實(shí)現(xiàn)下拉菜單Spinner效果,學(xué)習(xí)Spinner組件的使用方法,非常好用的一款組件,相當(dāng)于從下拉列表中選擇項(xiàng)目,感興趣的小伙伴們可以參考一下2016-04-04Android添加(創(chuàng)建)、刪除及判斷是否存在桌面快捷方式的方法
這篇文章主要介紹了Android添加(創(chuàng)建)、刪除及判斷是否存在桌面快捷方式的方法,涉及Android針對(duì)桌面快捷方式的相關(guān)操作技巧,需要的朋友可以參考下2015-05-05Android中findViewById獲取控件返回為空問(wèn)題怎么解決
這篇文章主要介紹了Android中findViewById獲取控件返回為空問(wèn)題怎么解決的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06Android實(shí)現(xiàn)跳動(dòng)的小球加載動(dòng)畫(huà)效果
Android中有各式各樣的加載動(dòng)畫(huà),大家多多少少都見(jiàn)過(guò),比如用過(guò)美團(tuán)客戶端的用戶對(duì)美團(tuán)那個(gè)加載小人的動(dòng)畫(huà)印象很深刻,一個(gè)可愛(ài)的小人在那拼命的跑。這樣的動(dòng)畫(huà)實(shí)現(xiàn)其實(shí)還有很多,今天這里就來(lái)實(shí)現(xiàn)一個(gè)跳動(dòng)的小球效果。有需要的可以參考借鑒。2016-08-08Android EditText限制輸入整數(shù)和小數(shù)的位數(shù)的方法示例
這篇文章主要介紹了Android EditText限制輸入整數(shù)和小數(shù)的位數(shù)的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08Android開(kāi)發(fā)之Wifi基礎(chǔ)教程
這篇文章主要介紹了Android開(kāi)發(fā)Wifi基礎(chǔ)教程,實(shí)例分析了Wifi的各種常見(jiàn)基本技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02Android控件之ProgressBar用法實(shí)例分析
這篇文章主要介紹了Android控件之ProgressBar用法,以一個(gè)完整實(shí)例形式較為詳細(xì)的分析了ProgressBar控件操作進(jìn)度顯示的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09