
本文实例讲述了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开发之加载图片的方法全部内容,希望文章能够帮你解决Android开发之加载图片的方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)