首页 > 代码库 > 试讲当助教!

试讲当助教!

试讲的题目HTTP网络编程之下载图片


public class textwill extends Activity{

private ImageView imageView;

private Bitmap bitmap;

Handler handler = new Handler(){

public void handleMessage(android.os.Message msg) {

if (msg.what==1) {

imageView.setImageBitmap(bitmap);

}

};

};

/**

* 首先我要知道,使用URL下载图片是一件耗时的操作,

* 解决耗时操作的办法有 常见一个子线程,或创建一个异步任务、

* 在这里我用的是子线程

*/

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//找到控件

imageView=(ImageView) findViewById(R.id.imageView1);

new Thread(new Runnable() {

@Override

public void run() {

try {

//定义一个URL对象

URL url =new URL("http://p7.qhimg.com/dmt/235_165_/t01b450ad95f830b856.jpg");

//打开一个URL对应的网络输入流

InputStream inputStream = url.openStream();

//因为我们下载的图像是一个字节流,所以我们要用到位图

//我们定义一个位图也就是bitmap,而且我们还需要用if判断一下,如果bitmap不为空的话,我们还需要用handler往主线程发送一个消息。

//让主线程把bitmap显示出来

bitmap = BitmapFactory.decodeStream(inputStream);

if (bitmap !=null) {

handler.sendEmptyMessage(1);

}

//inputStream.close();

//打开手机对应的输出流

OutputStream outputStream = openFileOutput("jiejie.jpg", MODE_WORLD_READABLE);

//在定义一个byte数组,用作缓存,大小我们给它1k;

byte[] buff = new byte[1024];

//在定一个整形的hasRead,用来保护读到字节数,并且用while循环来判断一下数据的大小是否为0,只要大于0则把他写入本地

int hasRead = 0;

while ((hasRead = inputStream.read(buff))>0) {

outputStream.write(buff, 0, hasRead);

}

outputStream.close();

inputStream.close();

}

catch (Exception e) {

e.printStackTrace();

}

}

}).start();

}

}


试讲当助教!