<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                各位讀者大家好,最近比較忙好久沒有寫blog了,今天擠點時間和大家分享一下Android中WebView的緩存。我們在項目中也時常會用到WebView這個控件,當我們加載html時候,會在我們data/應用package下生成database與cache兩個文件夾如下圖如示: ? ![](https://box.kancloud.cn/2016-08-10_57aaf0ec07bd6.gif) 我們請求的url記錄是保存在webviewCache.db里,而url的內容是保存在webviewCache文件夾下. 為了讓大家更容易理解,我做一個簡單的例子,我定義一個html文件,在里面加載了一個淘寶的衣服圖片的url,用WebView加載出來,然后再試著從緩存里把這張圖片讀取出來。 下面大家可以按照我的步驟一步一步來實踐: 第一步:新建一個Android工程命名為WebViewCacheDemo.目錄結構如下: ![](https://box.kancloud.cn/2016-08-10_57aaf0ec55fab.gif) 第二步:在assets目錄下新建一個html文件,命名為index.html,(這里加載了一個淘寶的圖片): http://img04.taobaocdn.com/imgextra/i4/608825099/T2nGXBXXpaXXXXXXXX_!!608825099.jpg_310x310.jpg ?![](https://box.kancloud.cn/2016-08-10_57aaf0ec6cd50.gif) ? 第三步:修改main.xml布局文件一個WebView控件一個Button(點擊加載緩存圖片用),代碼如下: ~~~ <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <WebView android:id="@+id/webview" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="從緩存里讀取圖片" /></LinearLayout>? ~~~ 第四步:修改主核心程序WebViewCacheDemo.java,這里我只加載了index.html文件,按鈕事件暫時沒寫,代碼如下: ~~~ package com.tutor.webviewcache;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.webkit.WebView;import android.widget.Button;public class WebViewCacheDemo extends Activity { private WebView mWebView; //private Button mButton; private static final String url = "file:///android_asset/index.html"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mWebView = (WebView)findViewById(R.id.webview); mWebView.loadUrl(url); // mButton = (Button)findViewById(R.id.button);// mButton.setOnClickListener(listener); }}? ~~~ 第五步:在AndroidMainifest.xml文件中加訪問網絡的權限: <uses-permission android:name="android.permission.INTERNET" /> 運行效果如下: ![](https://box.kancloud.cn/2016-08-10_57aaf0ec88d0d.gif) 此時我們在WebViewCache.db里的cache.table里多了一條記錄如下圖所示: ![](https://box.kancloud.cn/2016-08-10_57aaf0eca11fd.gif) 在cache/webviewCache/目錄下多了一個10d8d5cd文件,剛好和cache.table里的filepath,我們可以斷定這個文件就是我們從網上拽下來的圖片:![](https://box.kancloud.cn/2016-08-10_57aaf0ecb60cf.gif) ? 為了驗證猜想,我給Button增加事件響應,就是彈出Dialog,里面加載緩存的圖片,完整代碼如下: ? ~~~ package com.tutor.webviewcache;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import android.app.Activity;import android.app.Dialog;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup.LayoutParams;import android.webkit.WebView;import android.widget.Button;import android.widget.ImageButton;import android.widget.ImageView;public class WebViewCacheDemo extends Activity { private WebView mWebView; private Button mButton; private static final String url = "file:///android_asset/index.html"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mWebView = (WebView)findViewById(R.id.webview); mWebView.loadUrl(url); mButton = (Button)findViewById(R.id.button); mButton.setOnClickListener(listener); } //button點擊事件 OnClickListener listener = new Button.OnClickListener(){ @Override public void onClick(View v) { ImageView mImageView = new ImageButton(WebViewCacheDemo.this); mImageView.setImageBitmap(getPictureFromCache()); Dialog d = new Dialog(WebViewCacheDemo.this); d.setTitle("從緩存里讀取圖片"); d.setContentView(mImageView, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); d.show(); } }; //從緩存里讀取圖片,實際實用中會比這個靈活多,我這里寫死了 private Bitmap getPictureFromCache(){ Bitmap bitmap = null; File file = new File(getCacheDir()+"/webviewCache/10d8d5cd"); try { FileInputStream is = new FileInputStream(file); bitmap = BitmapFactory.decodeStream(is); } catch (FileNotFoundException e) { e.printStackTrace(); } return bitmap; }}? ~~~ ? 第六步:再次運行工程,點擊button按鈕,效果如下圖所示: ![](https://box.kancloud.cn/2016-08-10_57aaf0ecd086a.gif) OK,驗證成功,呵呵,今天只是一個簡單的小例子加深大家理解,實際應用肯定比這個復雜的多,希望對大家有所幫助,謝謝!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看