Sha*_*ole 4 android image drawable
我有这个代码从网址中提取图像并在应用程序中显示它.
Drawable drawableTest = LoadImageFromWeb("http://www.someimageurl");
imgView.setImageDrawable(drawableTest);
private Drawable LoadImageFromWeb(String url){
try {
InputStream is = (InputStream) new URL(url).getContent();
Drawable d = Drawable.createFromStream(is, "src name");
return d;
}catch (Exception e) {
System.out.println("Exc="+e);
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
该方法有效,图像被拉入应用程序没有问题.我想做的是两件事......
1)将进程移动到后台线程.
2)在下载图像时显示"加载"可绘制(位于可绘制文件夹中),然后在完成后切换到图像.如果有问题我想加载"无法加载图像"drawable(也位于drawable文件夹中).
有人可以帮助修改上面的方法,以便它在后台运行并在加载时显示相应的图像,如果有问题吗?
谢谢!你们摇滚顺便说一句.
香农
您可以使用AsyncTask另一个线程运行任务.这样,它就不会阻止UI.粗略地说,应该是这样的:
private class MyTask extends AsyncTask<String, Void, Drawable> {
ProgressDialog pd;
protected Drawable doInBackground(String... url) {
try {
pd = ProgressDialog.show(this, "Working..", "Getting image", true, false);
InputStream is = (InputStream) new URL(url[0]).getContent();
Drawable d = Drawable.createFromStream(is, "src name");
return d;
} catch (Exception e) {
System.out.println("Exception = " + e);
return null;
}
}
protected void onProgressUpdate(Void... progress) {
}
protected void onPostExecute(Drawable result) {
/* Image loaded...*/
pd.dismiss();
imgView.setImageDrawable(result);
}
}
MyTask task = new MyTask();
task.execute("http://www.someimageurl");
Run Code Online (Sandbox Code Playgroud)
您可以随意改变ProgressDialog...
| 归档时间: |
|
| 查看次数: |
2290 次 |
| 最近记录: |