Android-延迟加载图像



我正在试图伪造某种进度栏。我有X映像,希望ImageView以一定的延迟显示它们。

我试图做这样的事情:

for(i=2;i<X;i++) 
{
        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {  
              @Override
              public void run() {
               drawable = getResources().getDrawable(getResources()
                                .getIdentifier("img_"+i, "drawable", getPackageName()));
               imgPayment.setImageDrawable(drawable);
               }}, DELAY);                  
}

但是,FO循环不等待run()结束。我只是看到第一个也是最后一个图像。我尝试了其他几件事,但无法得到所需的结果。

为什么不使用动画?看来您没有动态加载图像。

 <animation-list android:id="@+id/selected" android:oneshot="false">
    <item android:drawable="@drawable/wheel0" android:duration="50" />
    <item android:drawable="@drawable/wheel1" android:duration="50" />
    ...
 </animation-list>

我错过了什么?

链接到文档

链接到样品

作为样本文档状态:

必须注意的是,start()方法在 在ongreate()方法的方法中都无法调用AnimationDrawable 您的活动,因为可绘制的动画尚未完全连接 到窗口。如果您想立即播放动画,而无需 需要互动,然后您可能需要从 您的活动中的onwindowfocuschanged()方法将被调用 当Android将您的窗户置于焦点时。

使用Thread.sleep()怎么样?如果您以增量方式设置每个图像的睡眠间隔,则将显示它们好像被订购一样。

for (i = 1; i < X; i++) 
{
    //Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() 
        {
            Thread.sleep(i * 1000); // REMARK HERE!
            drawable = getResources().getDrawable(getResources().getIdentifier
                                  ("img_" + i, "drawable", getPackageName()));
            imgPayment.setImageDrawable(drawable);
        }
    });
}

但是,要如上代码中使用变量i,请将其声明为全局静态变量。

static int i = 0;

我建议使用asynctask,然后从那里更新您的可绘制或使用回调。

最新更新