传入一个网络图片的地址:
如:String url = “https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=3591804592,290010643&fm=26&gp=0.jpg“;
private void download(final String url)
{
//开启一个线程,网络请求必须要开一个子线程
new Thread(new Runnable() {
@Override
//是复写run方法所有网络请求都必须在这个方法里进行操作
public void run() {
try
{
//1、实例化一个URL类并传入一个网络地址 2、通过openConnection()方法拿到网络请求URLConnectione类 3、通过getInputStream()拿到一个输出流4、最后下载一个Bitmap, 是一个图片的类
Bitmap bitmap = BitmapFactory.decodeStream(new URL(url).openConnection().getInputStream());
//因为子线程不能进行更改UI操作所以通过handler进行更改UI操作
//通过创建Message类保存信息
Message message = new Message();
message.obj = bitmap;
//传递Message类保存的信息给handler
handler.sendMessage(message);
} catch (IOException e)
{
e.printStackTrace();
}
}
}).start();
Handler 写在成员变量里
//handler类主要进行UI操作
private Handler handler = new Handler()
{
@Override
//当handler执行了sendMessage方法后会自动回调下面的这个方法,这个方法是在主线程内的操作
public void handleMessage(Message msg) {
super.handleMessage(msg);
//拿到Message 所保存的信息
Bitmap bitmap = (Bitmap) msg.obj;
//更改UI操作
ivIcon.setImageBitmap(bitmap);
ivBottom.setImageBitmap(bitmap);
//并把bitmap赋值给用户信息类方便下次调用
UserData.bitmapAVATAR = bitmap;
}
};