Android sdcard实现图片存储 、联网下载
程序员文章站
2024-02-19 09:44:28
本文实例介绍了sdcard存储图片下载简单操作,分享给大家供大家参考,具体内容如下
步骤 -- 在配置清单添加完联网权限后
1、res/layout界面布局...
本文实例介绍了sdcard存储图片下载简单操作,分享给大家供大家参考,具体内容如下
步骤 -- 在配置清单添加完联网权限后
1、res/layout界面布局
<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" > <imageview android:id="@+id/imageview" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <button android:id="@+id/bt_download" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="图片下载" android:onclick="image_download" /> </linearlayout>
2、有2个类一个操作sdcard的文件工具类(fileutil)另外一个mainactivity类
fileutil类
//操作sdcard的文件工具类 public class fileutil { private static final string cache_dir = environment.getexternalstoragedirectory() + "/my_caches/images"; private static int comp_jpg = 0; private static int comp_png = 1; //判断sdcard 是否挂载(是否有sdcard) public static boolean ismounted(){ string state = environment.getexternalstoragestate(); return state.equals(environment.media_mounted); } //获取sdcard文件 根路径的绝对路径 public static string getsdcard(){ return environment.getexternalstoragedirectory().getabsolutepath(); } //获取文件名 public static string getfilename(string url){ return url.substring(url.lastindexof('/') + 1); } //保存文件 方法1 public static void sava1(string url,byte[] data){ //判断是否有sdcard if(!ismounted()){ return ; } //有sdcard //判断是否有缓存文件夹 file dir = new file(cache_dir); if(!dir.exists()){ //不存在缓存文件夹 创建文件夹用来保存文件 dir.mkdirs(); } //把文件 数据存到sdcard file file = new file(dir,getfilename(url)); try { fileoutputstream fos = new fileoutputstream(file); fos.write(data); fos.close(); } catch (exception e) { e.printstacktrace(); } } //保存文件 方法2 public static void sava2(string url,bitmap bitmap,int format){ //判断 是否有sdcard if(!ismounted()){ return ; } file dir = new file(cache_dir); if(!dir.exists()){ dir.mkdirs(); } //把 文件数据 写到 sdcard file file = new file(dir,getfilename(url)); try { fileoutputstream fos = new fileoutputstream(file); //把图片文件写入缓存 bitmap.compress((format == comp_jpg?compressformat.jpeg:compressformat.png), 100, fos); fos.close(); } catch (exception e) { e.printstacktrace(); } } //读取图片 public static bitmap readimage(string url){ if(!ismounted()){ return null; } file file = new file(cache_dir,getfilename(url)); if(file.exists()){ return bitmapfactory.decodefile(file.getabsolutepath()); } return null; } //清空 缓存目录 public void clearcaches(){ file dir = new file(cache_dir); file[] file_datas = dir.listfiles(); for(file file : file_datas){ file.delete(); } } }
mainactivity类
public class mainactivity extends activity { private imageview imageview; private string url = "http://b.hiphotos.baidu.com/image/pic/item/d1160924ab18972bf5f68cc8e0cd7b899f510ae7.jpg"; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); this.imageview = (imageview) this.findviewbyid(r.id.imageview); //设置默认图片 imageview.setimageresource(r.drawable.ic_launcher); } //图片下载 按钮 点击事件 监听 public void image_download(view view){ //判断本地是否有图片 bitmap bitmap = fileutil.readimage(url); if(bitmap != null){ imageview.setimagebitmap(bitmap); }else{ //没有图片 就发送联网请求 new myasynctask().execute(url); } } //联网工具类 public class myasynctask extends asynctask<string, void, byte[]>{ @override protected byte[] doinbackground(string... params) { httpget get = new httpget(params[0]); httpclient client = new defaulthttpclient(); httpresponse response; try { response = client.execute(get); if(response.getstatusline().getstatuscode() == 200){ byte[] data = entityutils.tobytearray(response.getentity()); fileutil.sava1(params[0], data); return data; } } catch (exception e) { e.printstacktrace(); } return null; } @override protected void onpostexecute(byte[] result) { super.onpostexecute(result); if(result != null){ bitmap bitmap = bitmapfactory.decodebytearray(result, 0, result.length); imageview.setimagebitmap(bitmap); } } } }
以上就是本文的全部内容,希望对大家学习android软件编程有所帮助。
上一篇: python3+PyQt5实现使用剪贴板做复制与粘帖示例
下一篇: Android中如何加载数据缓存
推荐阅读
-
Android sdcard实现图片存储 、联网下载
-
Android编程滑动效果之Gallery+GridView实现图片预览功能(附demo源码下载)
-
Android中使用HttpURLConnection实现GET POST JSON数据与下载图片
-
Android中使用HttpURLConnection实现GET POST JSON数据与下载图片
-
Android编程实现下载图片及在手机中展示的方法
-
Android编程实现手绘及保存为图片的方法(附demo源码下载)
-
Android编程实现下载图片及在手机中展示的方法
-
Android 利用ViewPager实现图片可以左右循环滑动效果附代码下载
-
Android编程实现手绘及保存为图片的方法(附demo源码下载)
-
Android 利用ViewPager实现图片可以左右循环滑动效果附代码下载