我正在开发Android应用程序,我在我的应用程序中有一个图像滑块,现在我想当我点击我的滑块图像,图像显示在另一个活动但它需要一点时间打开,现在我想要在另一个活动中显示图像时想要实现并添加加载进度条,任何人都可以告诉我当我点击我的图像滑块时如何实现进度条,当打开另一个活动它开始进度条时,当图像显示它是dimiss?非常感谢帮助,想法和sugession,谢谢。
当我点击我的图片和其他活动时,这是我的活动:
iv_openimage = (ImageView) findViewById(R.id.iv_openimage);
iv_openimage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(VarientDetails.this,ImageSwitcher.class);
intent.putExtra("imageurls", imageurls);
Log.d("CMH", "images url = " + imageurls);
startActivity(intent);
}
});
这是我的imageswitcher活动,我可以显示我的图像:
public class ImageSwitcher extends Activity {
ImageView iv_getimage;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.imageswitcher);
iv_getimage = (ImageView) findViewById(R.id.imageView1);
ArrayList<String> resultArray = getIntent().getStringArrayListExtra("imageurls");
Log.d("CMH imgswtchr", "images url = " + resultArray);
Picasso.with(getBaseContext()).load(resultArray.get(0))
.into(iv_getimage);
}
}
答案 0 :(得分:0)
您要做的是将资源密集型任务放在所谓的AsyncTask中。此AsyncTask在与UI线程不同的线程上运行。把它放在其中可以进行UI操作onPostExecute();
所以你想要的是做一些事情:
start activity
set progressbar visible
start asynctask
在AsyncTask中:
execute image task that takes up time
hide progressbar
有关AsyncTask的更多信息,请访问:http://developer.android.com/reference/android/os/AsyncTask.html
此外,您当前实现不是最佳的原因是因为它都在同一个线程上运行。这使得UI线程在某个时间不可用。这是不好的做法,给用户带来了不好的体验。所以我总是建议使用AsyncTask进行这样的操作。虽然可以在任务完成之前和之后显示进度条,但任务仍然会锁定UI线程。
修改强>
根据要求,这是我在你的情况下所做的事情:
我首先创建一个像这样扩展AsyncTask的内部类
private class ImageLoadTask extends AsyncTask<String, Param, String>
{
@Override
protected String doInBackground(String... params)
{
//do something to retrieve the images
}
@Override
protected void onPostExecute(String result)
{
//hide the progressbar
}
}
然后在Activity本身启动这个AsyncTask只需执行:
progressBar.setVisibility(View.Visible);
ImageLoadTask imgTask = new ImageLoadTask();
imgTask.execute("parameter");