我是Android的新手,我尝试使用Volley从网址下载图片。 我已经成功地使用RequestQueue和ImageRequest显示来自某个URL的图像。 但现在我尝试将图像下载到设备上的某个特定文件夹。 到现在为止,我有一个简单的代码,显示我在TextView中插入的url图像。 我现在的目的是从插入的URL下载并保存图像。
我看到一些需要ImageLoader.getInstance()的示例,我不明白为什么我的ImageLoader根本没有getInstance()方法。
也许有人有更好的想法如何将图像从url保存到我的Android设备到特定文件夹? 谢谢!
爪哇:
public class MainActivity extends AppCompatActivity {
private String url = "http://iokds.org/wp-content/uploads/2016/10/product-default-300x300.png";
ImageView image;
EditText insertedLink;
Button submitBtn;
RequestQueue mRequestQueue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
image = (ImageView)findViewById(R.id.ivImageView);
insertedLink = (EditText) findViewById(R.id.insertLink);
submitBtn = (Button) findViewById(R.id.btn);
submitBtn.setOnClickListener(new SubmitButtonOnClickListener());
showImage(url);
}
private void showImage(String newUrl){
mRequestQueue = Volley.newRequestQueue(this.getApplicationContext());
ImageRequest imageRequest = new ImageRequest(newUrl, new BitmapListener(), 0, 0, null, null, new MyErrorListener());
mRequestQueue.add(imageRequest);
}
private class BitmapListener implements Response.Listener<Bitmap> {
@Override
public void onResponse(Bitmap response) {
image.setImageBitmap(response);
}
}
private class MyErrorListener implements Response.ErrorListener {
@Override
public void onErrorResponse(VolleyError error) {
image.setImageResource(R.drawable.error_icon);
}
}
private class SubmitButtonOnClickListener implements View.OnClickListener {
@Override
public void onClick(View v) {
url = insertedLink.getText().toString();
showImage(url);
}
}
}
我的xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:id="@+id/insertLink"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="@string/url"
android:layout_centerHorizontal="true"
android:layout_margin="10dp"/>
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/insertLink"
android:layout_centerHorizontal="true"
android:text="@string/btn"/>
<ImageView
android:id="@+id/ivImageView"
android:layout_below="@+id/btn"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="50dp"/>
</RelativeLayout>