Android开发之加载图片的方法
本文实例讲述了Android开发之加载图片的方法。分享给大家供大家参考。具体分析如下:
加载网络上的图片需要在manifest中配置访问网络的权限,如下:
<uses-permissionandroid:name="android.permission.INTERNET"/>
如果不配置这个权限的话,会报错:unknownhostexception。
packagecom.example.loadimgfromweb; importjava.io.InputStream; importandroid.app.Activity; importandroid.graphics.Bitmap; importandroid.graphics.BitmapFactory; importandroid.os.AsyncTask; importandroid.os.Bundle; importandroid.view.Menu; importandroid.widget.ImageView; publicclassMainActivityextendsActivity{ @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ImageViewv=(ImageView)findViewById(R.id.imageView1); Stringurl="http://minimg.hexun.com/i1.hexunimg.cn/2011-11-07/134970028_200x150.jpg"; newDownLoadImage(v).execute(url); } @Override publicbooleanonCreateOptionsMenu(Menumenu){ //Inflatethemenu;thisaddsitemstotheactionbarifitispresent. getMenuInflater().inflate(R.menu.activity_main,menu); returntrue; } publicclassDownLoadImageextendsAsyncTask<String,Void,Bitmap>{ ImageViewimageView; publicDownLoadImage(ImageViewimageView){ this.imageView=imageView; } @Override protectedBitmapdoInBackground(String...urls){ Stringurl=urls[0]; BitmaptmpBitmap=null; try{ InputStreamis=newjava.net.URL(url).openStream(); tmpBitmap=BitmapFactory.decodeStream(is); }catch(Exceptione){ e.printStackTrace(); } returntmpBitmap; } @Override protectedvoidonPostExecute(Bitmapresult){ imageView.setImageBitmap(result); } } }上面的例子中使用了AsyncTask来与前端用户界面进行交互。避免加载时间过长,影响界面的交互性。
如果是加载本地图片的话,直接来:
ImageViewv=(ImageView)findViewById(R.id.imageView1); v.setImageResource(R.drawable.apic);
在使用AsyncTask加载图片的时候可以顺便把图片保存在本地:
@Override protectedBitmapdoInBackground(String...urls){ Stringurl=urls[0]; BitmaptmpBitmap=null; try{ InputStreamis=newjava.net.URL(url).openStream(); URLu=newURL(url); HttpURLConnectionconn=(HttpURLConnection)u.openConnection(); Bitmapbitmap=BitmapFactory.decodeStream(is); //判断是否有内存卡 if(Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)){ //保存图片到本地 FilesdCardDir=Environment.getExternalStorageDirectory(); StringfileName="a.jpg"; StringfilePath=sdCardDir+"/"+fileName; FileOutputStreamfos=newFileOutputStream(filePath); bitmap.compress(Bitmap.CompressFormat.PNG,100,fos); } //关闭流 is.close(); conn.disconnect(); returnbitmap; }catch(Exceptione){ e.printStackTrace(); } returntmpBitmap; }
希望本文所述对大家的Android程序设计有所帮助。