我正在创建一个拥有用户个人资料的应用,到目前为止,我已经制作了这样的应用,用户可以选择他们的用户名,密码,电子邮件,姓名和个人资料照片。 个人资料图片可以在现场拍摄,也可以从手机图库中选择。
我总共有6个ImageView,其中一个用于个人资料图片(它们分为2行和3列)。使用我将在下面提供的代码,我只能修改用户的个人资料图片,我无法看到如何更改它,以便我可以下载我上传的所有图像(进入ImageViews)而不必不必要地编写代码长。
以下是发生了什么的一般概念:用户选择图像,图像上传/发布到服务器的文件夹(SERVER_ADDRESS + "uploads/"+ name + ".JPG"
),然后用户转到活动图像的视图(但是右边)现在只有一个ImageView加载我服务器上“uploads /”文件夹中的图片。
现在我需要的是:当图片被加载/下载时,我希望它们存储在手机上。图像是否可以同时下载,存储,或者可能从那里加载到ImageView中,然后当用户离开另一个用户配置文件时从手机中删除? 我还有一个ViewPager,其中必须加载图像,这就是为什么我不希望每次用户从寻呼机中的一个选项卡转到另一个选项卡时下载。
当然,如果有更好的方法,请务必在答案中加入。 对不起凌乱的代码,但我只是想找到一种正确的方法。
修改
我将DownloadImage更改为公共类并更改了构造函数,而不是仅仅能够传递我添加的String名称,以便您可以传递ImageView,这样可以加载我想要的任意数量的图像。我将粗体代码中的更改。也有人知道一种简单的方法在内部存储或SD卡的手机上存储图像,所以我可以从那里加载我的图像?
public class DownloadImage extends AsyncTask<Void, Void, Bitmap> {
String name;
**ImageView imageView;**
public DownloadImage(String name, **ImageView imageView**) {
this.name = name;
**this.imageView = imageView;**
}
@Override
protected Bitmap doInBackground(Void... params) {
String url = ServerRequests.SERVER_ADDRESS + "pictures/" + name + ".JPG";
try {
URLConnection connection = new URL(url).openConnection();
connection.setConnectTimeout(ServerRequests.CONNECTION_TIMEOUT);
connection.setReadTimeout(ServerRequests.CONNECTION_TIMEOUT);
return BitmapFactory.decodeStream((InputStream) connection.getContent(), null, null);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
if (bitmap != null) {
imageView.setImageBitmap(bitmap);
}
}