Android 使用Okhttp和AsyncTack实现从网上获取图片并显示

1.在build.gradle文件中添加依赖

compile 'com.squareup.okhttp:okhttp:2.0.0'

2.编写布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<Button
    android:id="@+id/btn_down"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="点击下载图片"/>

<ImageView
    android:id="@+id/iv_flower"
    android:layout_width="380dp"
    android:layout_height="450dp"
    android:layout_gravity="center"/>

</LinearLayout>

3.MainActivity如下

private ImageView ivFlower;
private Button btnDown;
String imgUrl = "";//图片网址
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

​    ivFlower=(ImageView)findViewById(R.id.iv_flower);
​    btnDown=(Button)findViewById(R.id.btn_down);

​    btnDown.setOnClickListener(new View.OnClickListener() {
​        @Override
​        public void onClick(View view) {
​            new DownloadAsyncTask().execute();
​        }
​    });
}

class DownloadAsyncTask extends AsyncTask<String,Void,Bitmap>{
    Bitmap bitmap = null;
    @Override
    protected Bitmap doInBackground(String... strings) {

​        OkHttpClient okHttpClient = new OkHttpClient(); //建立客户端
​        try {
​            Request request = new Request.Builder().url(imgUrl).build(); //封装请求
​            ResponseBody responseBody = okHttpClient.newCall(request).execute().body(); //执行请求等到响应体
​            InputStream inputStream = responseBody.byteStream();
​            bitmap = BitmapFactory.decodeStream(inputStream);
​        } catch (Exception e) {
​            e.printStackTrace();
​        }
​        return bitmap;
​    }

​    @Override
​    protected void onPreExecute() {
​        super.onPreExecute();
​    }

​    @Override
​    protected void onPostExecute(Bitmap bitmap) {
​        ivFlower.setImageBitmap(bitmap);
​    }
}




猜你喜欢

转载自blog.csdn.net/qq_43249816/article/details/88787403