010_02带缓存的图片查看器
2015-05-20 11:05
148 查看
第一次连接网络下载图片后,将在本机/data/data/...下保存图片;第二次打开应用程序点击“获取图片”将直接从本机缓存获取。
缓存图片保存位置如下:
MainActivity.java
activity_main.xml
AndroidManifest.xml中权限设置:
缓存图片保存位置如下:
MainActivity.java
package com.example.day10_02getpicturebycache; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.ImageView; import android.widget.Toast; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } final static int MSG_DOWNLOAD_OK =1; final static int MSG_DOWNLOAD_ERROR =2; Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); //针对message进行处理 switch (msg.what) { case MSG_DOWNLOAD_OK: ImageView iv= (ImageView) findViewById(R.id.iv_pic); iv.setImageBitmap((Bitmap)msg.obj); break; case MSG_DOWNLOAD_ERROR: Toast.makeText(MainActivity.this, "下载失败", 1).show(); break; default: break; } } }; public void getpicture(View v){ File file = new File(getCacheDir(), "zy.jpg"); if(file.exists()) { Bitmap bm =new BitmapFactory().decodeFile(file.getAbsolutePath()); ImageView iv= (ImageView) findViewById(R.id.iv_pic); iv.setImageBitmap(bm); } else { //下面的整个代码是从网络url下载对应的数据 Thread tread = new Thread(){ public void run() { String path = "http://192.168.3.30:8080/tomcat.gif"; try { URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); //set paramter 3 conn.setReadTimeout(5000); conn.setRequestMethod("GET"); conn.setConnectTimeout(5000); // pending; conn.connect(); if (conn.getResponseCode()==200) { InputStream is = conn.getInputStream(); //如何放到缓存? File file = new File(getCacheDir(), "zy.jpg"); FileOutputStream fos = new FileOutputStream(file); byte[] b =new byte[1024]; int len=0; while ((len=is.read(b))!=-1) { fos.write(b, 0, len); } is.close(); fos.close(); //从一个保存的cache文件中,去得到一个bitmap对象。 Bitmap bm = new BitmapFactory().decodeFile(file.getAbsolutePath()); Message msg = handler.obtainMessage(); msg.what = MSG_DOWNLOAD_OK; msg.obj = bm; handler.sendMessage(msg); } else { Message msg = handler.obtainMessage(); msg.what =MSG_DOWNLOAD_ERROR; handler.sendMessage(msg); //Toast.makeText(this, "下载失败", 1).show(); } }catch (Exception e) { e.printStackTrace(); } }; }; tread.start(); } } }
activity_main.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" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="hello_world" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="获取图片" android:onClick="getpicture"/> <ImageView android:id="@+id/iv_pic" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" ></ImageView> </LinearLayout>
AndroidManifest.xml中权限设置:
<uses-permission android:name="android.permission.INTERNET"/>
相关文章推荐
- Android简易实战教程--第二十六话《网络图片查看器在本地缓存》
- 黑马Android:带缓存的网络图片查看器
- Android简易实战教程--第二十六话《网络图片查看器在本地缓存》
- 010_01网络图片查看器
- 带缓存的网页图片查看器
- 带缓存功能的图片查看器
- 24.带缓存的图片查看器
- Android本地缓存图片示例代码
- 使用图片和数据缓存技术提升App性能(第4章) 之一
- android读取大图片并缓存
- NSOperation之为UItabView制作图片缓存——在didReceiveMemoryWarning方法中做图片缓存的清理操作
- 图片缓存的工具类
- Picasso:一个专为Android打造的强大的图片下载和缓存库
- Android高效加载大图、多图解决方案,有效避免程序OOM (图片压缩和图片缓存LruCache)
- 解决glide加载七牛云图片缓存问题(url带token)
- android网络图片查看器简单实现代码
- apache中使用.htaccess文件缓存图片的配置方法
- Android批量图片加载经典系列——使用二级缓存、异步网络负载形象
- 图片缓存技术(adnroid官方文档翻译)
- tableview 图片缓存