如何使用Volley下载图像? [英] How to download an Image by using Volley?

查看:69
本文介绍了如何使用Volley下载图像?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用Volley库将图像下载到ImageView中.
我将Volley Library的响应注入到ImageView中,但是没有得到想要的结果.

I am Trying to download an Image into an ImageView by using the Volley Library.
I inject the response of the Volley Library into the ImageView, but I am not getting the desired result.

请检查我的代码并建议在哪里可以进行更改以获得所需的结果.

Please check my code and suggest where I can make the changes to get the desired result.

public class MainActivity extends AppCompatActivity {
    Button response_click;
    TextView text_response;
    RequestQueue requestQueue;
    ImageView image_download;
    String server_url="https://upload.wikimedia.org/wikipedia/commons/thumb/c/c1/Starburst_in_NGC_4449_(captured_by_the_Hubble_Space_Telescope).jpg/1024px-Starburst_in_NGC_4449_(captured_by_the_Hubble_Space_Telescope).jpg";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        response_click=(Button) findViewById(R.id.click_response);
        text_response=(TextView) findViewById(R.id.text_response);
        image_download=(ImageView)findViewById(R.id.image_download);
    }
    public void response_click(View view){
        requestQueue= Volley.newRequestQueue(getApplicationContext());
        StringRequest stringRequest=new StringRequest(Request.Method.POST, server_url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                image_download.setImageResource(Integer.parseInt(response));


            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                text_response.setText("ou got an error...");
            }
        });

    }
}

推荐答案

您使用了错误的请求类型.有一个ImageRequestImageLoader.

You are using the wrong type of request. There is an ImageRequest or ImageLoader.

请参考文档中的示例代码段或以下示例:

ImageView mImageView;
String url = "http://i.imgur.com/7spzG.png";
mImageView = (ImageView) findViewById(R.id.myImage);
...

// Retrieves an image specified by the URL, displays it in the UI.
ImageRequest request = new ImageRequest(url,
    new Response.Listener<Bitmap>() {
        @Override
        public void onResponse(Bitmap bitmap) {
            mImageView.setImageBitmap(bitmap);
        }
    }, 0, 0, null,
    new Response.ErrorListener() {
        public void onErrorResponse(VolleyError error) {
            mImageView.setImageResource(R.drawable.image_load_error);
        }
    });
// Access the RequestQueue through your singleton class.
MySingleton.getInstance(this).addToRequestQueue(request);

或者您也可以使用Volley的NetworkImageView.

Or you can use NetworkImageView, also part of Volley.

但是,请注意,Google已通过淘汰Apache弃用了自己的Volley ,但是有一个临时解决方法:

However, be advised that Google has deprecated their own Volley by phasing out Apache, but there is a temp workaround: How to use the legacy Apache HTTP client on Android Marshmallow?

此外(现在带有P +),如果您的应用使用Google Maps SDK,则还需要添加

Furthermore, now with P+, if your app uses Google Maps SDK, you will additionally need to add a uses-library/false attribute

但是,就像大多数人会建议的那样,如果可以的话,请使用毕加索 http://square.github.io/picasso/或更新的版本.

But like most people will suggest, if you can, use Picasso http://square.github.io/picasso/ or something newer.

这篇关于如何使用Volley下载图像?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆