连网下载图片跟连网下载字符串没多大区别,都要在异步任务里操作,不能在主线程操作,我这里放的是网络上的地址,也可以换成本地地址都行,效果如下:
package com.example.myandroid.json;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.Toast;
import com.example.myandroid.R;
import com.example.myandroid.sqlite.MyFilesActivity;
public class HttpImageActivity extends Activity {
private Button btnFirst, twoBut;
private ImageView mImageView;
private Bitmap bitmap = null;
private ProgressBar progress;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.downloadimage);
btnFirst = (Button) findViewById(R.id.btnFirst);
progress = (ProgressBar) findViewById(R.id.progress);
mImageView = (ImageView) findViewById(R.id.image);
twoBut = (Button) findViewById(R.id.btntwo);
btnFirst.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String url = "http://b.hiphotos.baidu.com/image/pic/item/8ad4b31c8701a18bae4fce489c2f07082838fe15.jpg";
getAsyncTaskBitmap(url);
}
});
}
// 连网操作要与异步任务一起用,耗时操作不能放在主线程
public void getAsyncTaskBitmap(String httpurl) {
new AsyncTask<String, Void, Bitmap>() {
protected void onPreExecute() {
progress.setVisibility(View.VISIBLE);
};
protected Bitmap doInBackground(String... params) {
String httpurls = params[0];
Bitmap bitmap = getHttpImage(httpurls);
return bitmap;
}
@Override
protected void onPostExecute(Bitmap result) {
if (result != null) {
mImageView.setImageBitmap(result);
progress.setVisibility(View.INVISIBLE);
}
}
}.execute(httpurl);
}
// 用HttpURLConnection连网取图片
public Bitmap getHttpImage(String httpurl) {
URL url = null;
InputStream in = null;
HttpURLConnection connection;
try {
url = new URL(httpurl);
connection = (HttpURLConnection) url.openConnection();
in = connection.getInputStream();
// in=url.openStream();//简便方法获取流
Bitmap bitmap = BitmapFactory.decodeStream(in);// 取图片跟取字符串的关键在这里,图片要返回bitmap;
return bitmap;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (in != null)
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
}
xml布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/btnFirst"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="图片下载" />
<Button
android:id="@+id/btntwo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="保存图片" />
<FrameLayout
android:id="@+id/frameLayout"
android:layout_width="fill_parent"
android:layout_height="match_parent" >
<!-- 用于显示加载的图片 -->
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="2dp"
android:scaleType="centerInside" >
</ImageView>
<ProgressBar
android:id="@+id/progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="gone" >
</ProgressBar>
</FrameLayout>
</LinearLayout>