Android:Progress Bar作为占位符

时间:2011-06-24 20:26:43

标签: android progress-bar

我希望在我的图像被提取时弄清楚如何使用进度条微调器作为占位符。我把一个动画的.gif文件放进去,但很快我发现.gif不能和android一起玩。这是我现在的代码:

public void displayImage(String url, CarActivity activity, ImageView imageView) {
        if(imageMap.containsKey(url))
            imageView.setImageBitmap(imageMap.get(url));
        else {
            queueImage(url, activity, imageView);
            imageView.setImageResource(R.drawable.loading);

        }
    }

如何将图像设置为我的loading.gif,而不是将内置微调器用作占位符,并可能将其覆盖在另一个图像上。

谢谢!

2 个答案:

答案 0 :(得分:5)

您真正的问题是“如何将一个视图置于另一个视图之上”。在您的情况下,您似乎需要后面的ImageView和前面的ProgressBar。 (ProgressBar名称有点不直观,因为默认情况下它不是一个条形图,它是一个小旋转动画。)

在您目前拥有ImageView的布局中,创建一个RelativeLayout。在RelativeLayout中,首先放置ImageView,然后放置ProgressBar。设置ProgressBar的android:visibility属性=“不可见”,当你希望它被看到时,在代码中设置它:view.setVisibility(View.VISIBLE); (或。不可见)。

将RelativeLayout的大小设置为wrap_content,并对ImageView执行相同操作。对于ProgressBar,您可能希望硬编码小尺寸,例如40dip宽度和高度。如果希望ProgressBar的布局参数居中于图像的中间位置,请将其设置为“centerInParent”。

答案 1 :(得分:2)

我会考虑使用ViewAnimator在ImageView和ProgressBar小部件之间切换。

将ViewAnimator添加到XML Layout,然后在Activity中执行以下操作:

ViewAnimator switch = (ViewAnimator) findViewById(R.id.your_id);
ImageView image = new ImageView(this);
ProgressBar loading = new ProgressBar(this);

switch.addView(loading, 0, myLayoutParams);
switch.addView(image, 1, myLayoutParams);

addView()的第一个字段是你要添加的子视图,第二个是Animator中的索引,第三个是你定义的LayoutParams对象(我没有显示)。

我还没有测试过代码,但是希望能够显示Android ProgressBar小部件。

然后,只要您的图片已加载,请致电:

switch.showNext();

此外,示例here似乎与您想要查看的内容类似。