Android开发之加载图片的方法
程序员文章站
2022-11-05 15:46:48
本文实例讲述了android开发之加载图片的方法。分享给大家供大家参考。具体分析如下:
加载网络上的图片需要在manifest中配置访问网络的权限,如下:
本文实例讲述了android开发之加载图片的方法。分享给大家供大家参考。具体分析如下:
加载网络上的图片需要在manifest中配置访问网络的权限,如下:
<uses-permission android:name="android.permission.internet" />
如果不配置这个权限的话,会报错:unknown host exception。
package com.example.loadimgfromweb; import java.io.inputstream; import android.app.activity; import android.graphics.bitmap; import android.graphics.bitmapfactory; import android.os.asynctask; import android.os.bundle; import android.view.menu; import android.widget.imageview; public class mainactivity extends activity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); imageview v = (imageview) findviewbyid(r.id.imageview1); string url = "http://minimg.hexun.com/i1.hexunimg.cn/2011-11-07/134970028_200x150.jpg"; new downloadimage(v).execute(url); } @override public boolean oncreateoptionsmenu(menu menu) { // inflate the menu; this adds items to the action bar if it is present. getmenuinflater().inflate(r.menu.activity_main, menu); return true; } public class downloadimage extends asynctask<string, void, bitmap> { imageview imageview; public downloadimage(imageview imageview) { this.imageview = imageview; } @override protected bitmap doinbackground(string... urls) { string url = urls[0]; bitmap tmpbitmap = null; try { inputstream is = new java.net.url(url).openstream(); tmpbitmap = bitmapfactory.decodestream(is); } catch (exception e) { e.printstacktrace(); } return tmpbitmap; } @override protected void onpostexecute(bitmap result) { imageview.setimagebitmap(result); } } }上面的例子中使用了asynctask来与前端用户界面进行交互。避免加载时间过长,影响界面的交互性。
如果是加载本地图片的话,直接来:
imageview v = (imageview) findviewbyid(r.id.imageview1); v.setimageresource(r.drawable.apic);
在使用asynctask加载图片的时候可以顺便把图片保存在本地:
@override protected bitmap doinbackground(string... urls) { string url = urls[0]; bitmap tmpbitmap = null; try { inputstream is = new java.net.url(url).openstream(); url u = new url(url); httpurlconnection conn = (httpurlconnection) u.openconnection(); bitmap bitmap = bitmapfactory.decodestream(is); // 判断是否有内存卡 if (environment.getexternalstoragestate().equals( environment.media_mounted)) { // 保存图片到本地 file sdcarddir = environment.getexternalstoragedirectory(); string filename = "a.jpg"; string filepath = sdcarddir + "/" + filename; fileoutputstream fos = new fileoutputstream(filepath); bitmap.compress(bitmap.compressformat.png, 100, fos); } // 关闭流 is.close(); conn.disconnect(); return bitmap; } catch (exception e) { e.printstacktrace(); } return tmpbitmap; }
希望本文所述对大家的android程序设计有所帮助。
推荐阅读
-
Android 图片存储到指定路径和相册的方法
-
JavaScript实现图片懒加载的方法分析
-
Android数据持久化之读写SD卡中内容的方法详解
-
android studio怎么添加.so文件?android studio加载so文件的方法
-
Android开发之设置开机自动启动的几种方法
-
Android之采用execSQL与rawQuery方法完成数据的添删改查操作详解
-
Android开发实现的IntentUtil跳转多功能工具类【包含视频、音频、图片、摄像头等操作功能】
-
Android开发获取传感器数据的方法示例【加速度传感器,磁场传感器,光线传感器,方向传感器】
-
Android图片加载框架之Glide 4的用法介绍
-
Android开发之ListView功能扩展,实现高性能的瀑布流布局讲解