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程序设计有所帮助。