您的位置:首页 > 理论基础 > 计算机网络

Android 异步从网络上下载图片

2014-08-13 00:03 344 查看
packagecom.example.android_asynctask;

importorg.apache.http.HttpEntity;
importorg.apache.http.HttpResponse;
importorg.apache.http.client.HttpClient;
importorg.apache.http.client.methods.HttpGet;
importorg.apache.http.impl.client.DefaultHttpClient;
importorg.apache.http.util.EntityUtils;

importandroid.os.AsyncTask;
importandroid.os.Bundle;
importandroid.app.Activity;
importandroid.app.ProgressDialog;
importandroid.graphics.Bitmap;
importandroid.graphics.BitmapFactory;
importandroid.view.Menu;
importandroid.view.View;
importandroid.widget.Button;
importandroid.widget.ImageView;

publicclassMainActivityextendsActivity{

privateButtonbutton;
privateImageViewimageView;
privateStringimage_Path="http://e.hiphotos.baidu.com/image/pic/item/2fdda3cc7cd98d10b510fdea233fb80e7aec9021.jpg";
privateProgressDialogdialog;

@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=(Button)findViewById(R.id.button1);
imageView=(ImageView)findViewById(R.id.imageView1);
dialog=newProgressDialog(this);
dialog.setTitle("提示信息");
dialog.setMessage("正在下载,请稍候...");
button.setOnClickListener(newView.OnClickListener(){

@Override
publicvoidonClick(Viewarg0){
//TODOAuto-generatedmethodstub
newMYTask().execute(image_Path);
}
});
}

/**
*使用异步任务的规则:1、申明的类继承AsyncTask标注三个参数的类型
*2、第一个参数表示要执行的任务,通常是网络的路径;第二个参数表示进度的刻度,第三个参数表示任务执行的返回结果
*
*@authorliende
*
*/
publicclassMYTaskextendsAsyncTask<String,Void,Bitmap>{
/**
*表示任务执行之前的操作
*/
@Override
protectedvoidonPreExecute(){
//TODOAuto-generatedmethodstub
super.onPreExecute();
dialog.show();
}

/**
*主要是完成耗时的操作
*/
@Override
protectedBitmapdoInBackground(String...arg0){
//TODOAuto-generatedmethodstub
//使用网络连接类HttpClient类王城对网络数据的提取
HttpClienthttpClient=newDefaultHttpClient();
HttpGethttpGet=newHttpGet(arg0[0]);
Bitmapbitmap=null;
try{
HttpResponsehttpResponse=httpClient.execute(httpGet);
if(httpResponse.getStatusLine().getStatusCode()==200){
HttpEntityhttpEntity=httpResponse.getEntity();
byte[]data=EntityUtils.toByteArray(httpEntity);
bitmap=BitmapFactory
.decodeByteArray(data,0,data.length);
}
}catch(Exceptione){
//TODO:handleexception
}
returnbitmap;
}

/**
*主要是更新UI的操作
*/
@Override
protectedvoidonPostExecute(Bitmapresult){
//TODOAuto-generatedmethodstub
super.onPostExecute(result);
imageView.setImageBitmap(result);
dialog.dismiss();
}

}

@Override
publicbooleanonCreateOptionsMenu(Menumenu){
//Inflatethemenu;thisaddsitemstotheactionbarifitispresent.
getMenuInflater().inflate(R.menu.main,menu);
returntrue;
}

}

<uses-permissionandroid:name="android.permission.INTERNET"/>


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: