标签:android android-imageview android-volley
我正在尝试使用Volley库将图像下载到ImageView中.
我将Volley Library的响应注入ImageView,但我没有得到理想的结果.
请检查我的代码并建议我可以在哪里进行更改以获得所需的结果.
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 one rrorResponse(VolleyError error) {
text_response.setText("ou got an error...");
}
});
}
}
解决方法:
您使用的是错误的请求类型.有一个ImageRequest或ImageLoader.
请参考an example snippet in the docs或以下示例:
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 one rrorResponse(VolleyError error) {
mImageView.setImageResource(R.drawable.image_load_error);
}
});
// Access the RequestQueue through your singleton class.
MySingleton.getInstance(this).addToRequestQueue(request);
或者您也可以使用NetworkImageView,它也是Volley的一部分.
但是,请注意谷歌有deprecated their own Volley by phasing out Apache,但有一个临时解决方法:How to use the legacy Apache HTTP client on Android Marshmallow?
此外,现在使用P,如果您的应用使用Google Maps SDK,则还需要添加uses-library/false attribute
但就像大多数人会建议的那样,如果可以的话,可以使用Picasso http://square.github.io/picasso/或更新的东西.
标签:android,android-imageview,android-volley 来源: https://codeday.me/bug/20190527/1165129.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。