我想将一个大/复杂的svg图像文件加载到我的imageView中。加载svg需要时间来加载我的HTC Desire S和Lenovo a60。分别约为5秒和10秒。
现在我的应用程序在imageView完全加载之前大约5秒没有响应
我使用这个简单的代码加载图像..
svg = SVGParser.getSVGFromResource(getResources(), R.raw.gf);
mImageView.setImageDrawable(svg.createPictureDrawable());
我看起来像(webView)
webView.setWebViewClient(new WebViewClientEx(MainActivity.this, DEBUG) {
@Override
public void onPageFinished(final WebView view, String url) {
...........
.............}
});
我在之前的项目中使用过......
最后我的问题:
1。)使应用看起来响应的最佳方法是什么?
我打算使用asynctask但不知道如何使用它...这是否适用?
2。)图像完全加载后是否有监听器?
我的方法是在加载imageView时显示progressDialog,并在imageView完全加载后隐藏它。
您认为最好用于显示/隐藏progressDialog的其他建议吗?谢谢!
答案 0 :(得分:2)
在此处使用异步任务。 (加载器也可以工作,但异步任务更容易解释。)
private class LoadSVGTask extends AsyncTask<Integer, Void, Drawable> {
protected Drawable doInBackground(Integer... res) {
mProgressBar.setVisibility(View.Visible);
svg = SVGParser.getSVGFromResource(getResources(),res);
Drawable d = svg.createPictureDrawable();
return d;
}
// gets executed in main thread
protected void onPostExecute(Drawable result) {
mProgressBar.setVisibility(View.Gone);
mImageView.setImageDrawable(result);
}
}
使用以下命令启动任务
new LoaderSVGTask().execute(R.raw.gf, null, null);
请参阅:http://developer.android.com/reference/android/os/AsyncTask.html
答案 1 :(得分:1)
只需在
中引用AsyncTask即可protected void onPreExecute (){
progressDialog.show(......);
}
protected abstract Result doInBackground (Params... params){
//load your image from here
}
protected void onPostExecute (Result result){
progressDialog.dismiss();
}