易采站长站为您分析Android传递Bitmap对象在两个Activity之间的相关资料,需要的朋友可以参考下
通过内部存储方式实现了在两个Activity之间传递Bitmap对象以及其它支持串行化的Java对象,关键点有如下:
1. HTTP客户端下载图片,通过ImageView对象显示
2. 把ImageView上的Bitmap对象从当前Activity传递到另外一个Activity中并显示出来
3. 基于串行化传递Java对象数据
首先看我是怎么实现HTTP客户端下载图片,通过异步Task接口实现HTTP客户端下载图片并通过Handler来更新ImageView,代码如下:
package com.example.sharedemo;
import java.io.IOException;
import java.io.InputStream;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
public class ImageLoadTask extends AsyncTask<String, Void, Bitmap> {
private Handler handler;
public ImageLoadTask(Handler handler) {
this.handler = handler;
}
protected void onPostExecute(Bitmap bitmap) {
Message msg = new Message();
msg.obj = bitmap;
handler.sendMessage(msg);
}
@Override
protected Bitmap doInBackground(String... urls) {
Bitmap bitmap = null;
// create HTTP client
HttpClient httpclient = new DefaultHttpClient();
try {
// GET request
Log.i("image-url", urls[0]);
HttpGet httpRequest = new HttpGet(urls[0]);
HttpResponse httpResponse = httpclient.execute(httpRequest);
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
// get entity from response
HttpEntity httpEntity = httpResponse.getEntity();
// read stream
InputStream is = httpEntity.getContent();
bitmap = BitmapFactory.decodeStream(is);
is.close();
Log.i("image", "already get the image by url : " + urls[0]);
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
httpclient.getConnectionManager().shutdown();
}
return bitmap;
}
}










