在android中移动屏幕中的图像按钮

时间:2011-07-05 18:30:22

标签: android android-layout imagebutton

我在android中有问题,首先我想要一个按钮,我每2秒移动一次到屏幕上的不同位置,但我不能这样做(如果有人知道这将是非常有帮助的)。 无论如何,我的另一种方法是在不同的位置制作5个不同的按钮并使用setVisibility()函数移动,但它在中间崩溃我不知道为什么,这里是代码:

final ImageButton[] face = new ImageButton[5];

    face[0] = (ImageButton) findViewById(R.id.ImageButton1);
    face[1] = (ImageButton) findViewById(R.id.ImageButton2);
    face[2] = (ImageButton) findViewById(R.id.ImageButton3);
    face[3] = (ImageButton) findViewById(R.id.ImageButton4);
    face[4] = (ImageButton) findViewById(R.id.ImageButton5);

    for(int i=0;i<5;i++)
    {
        face[i].setVisibility(View.GONE);
    }



    Thread timer=new Thread() {
        public void run(){
            for(int i=0;true;i++)
            {
                if(i==5)
                {
                    i=0;
                }
                Log.v("VISIBLE AT I = ",Integer.toString(i));
                face[i].setVisibility(View.VISIBLE);
                try {
                    sleep(2000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    Log.v("CATCH","CATCH");
                    e.printStackTrace();
                }
                //Log.v("SLEPT","SLEPT");
                face[i].setVisibility(View.INVISIBLE);  // IT CRASHES HERE
                Log.v("INVISIBLE AT I = ",Integer.toString(i));
            }
        }
    };

    timer.start();

如果有人能帮助我,那就太棒了,谢谢。

1 个答案:

答案 0 :(得分:1)

你想过用动画做这件事吗?如果您的目标是Honeycomb,则可以使用property animation;对于早期平台,您可以使用view animation

对于崩溃,您只能从UI线程修改UI元素,而不能从单独的线程修改。您需要发回信号,或使用其中一个(非常好的)帮助程序来处理此问题,例如AsyncTask。

请参阅:http://developer.android.com/resources/articles/painless-threading.html