Android:在不锁定UI的情况下为循环更改内部图像

Android:在不锁定UI的情况下为循环更改内部图像,android,Android,下面是我的代码 for(int k=1 ; k<=1000; k++) { if((k%2)==0) i.setImageResource(R.drawable.barbie2); else i.setImageResource(R.drawable.barbie3); try { Thread.sleep(1000); } catch(InterruptedException e) { } }

下面是我的代码

for(int k=1 ; k<=1000; k++)
{
    if((k%2)==0)
        i.setImageResource(R.drawable.barbie2);
    else
        i.setImageResource(R.drawable.barbie3);

    try {
        Thread.sleep(1000);
    } catch(InterruptedException e) {
    } 
}
我想在不锁定UI的情况下每1秒交换两个图像。
我怎样才能在android中做到这一点请帮助我。

使用。

使用。

遵循其javadoc的建议:


这会在UI线程上读取和解码位图,这可能会导致延迟中断。如果这是一个问题,考虑使用SETimaDRAWABLANDROID.GracIC.Dababe.Dababor或SeMaTigBITMAPANDROIDI.GrICICS。位图和BitmapFactory代替。

< P>遵循其JavaDoc:

的建议。


这会在UI线程上读取和解码位图,这可能会导致延迟中断。如果这是一个问题,请考虑使用SETIMAGEDRAWABLANDROID.GracIC.Dababe.Dababor或SeMaTimeBigMaPoDROIDID.GraceC.BITMAP和BitmapFactory代替.< /P> < P>以这种方式在单独的线程中执行:

    new Thread(new Runnable() {
        @Override
        public void run() {
            for(int k=1 ; k<=1000; k++)
            {
                if((k%2)==0)
                    i.post(new Runnable() {
                        @Override
                        public void run() {
                            i.setImageResource(R.drawable.barbie2);
                        }
                    });

                else
                    i.post(new Runnable() {
                        @Override
                        public void run() {
                            i.setImageResource(R.drawable.barbie3);
                        }
                    });


                try {
                    Thread.sleep(1000);
                    } catch(InterruptedException e) {
                    } 
            }
        }
    }).start();

如果可能,将图像i定义为final

在一个单独的线程中通过以下方式执行:

    new Thread(new Runnable() {
        @Override
        public void run() {
            for(int k=1 ; k<=1000; k++)
            {
                if((k%2)==0)
                    i.post(new Runnable() {
                        @Override
                        public void run() {
                            i.setImageResource(R.drawable.barbie2);
                        }
                    });

                else
                    i.post(new Runnable() {
                        @Override
                        public void run() {
                            i.setImageResource(R.drawable.barbie3);
                        }
                    });


                try {
                    Thread.sleep(1000);
                    } catch(InterruptedException e) {
                    } 
            }
        }
    }).start();
如果可能,将您的图像i定义为最终图像