Перемещение кнопки изображения на экране в Android - PullRequest
0 голосов
/ 05 июля 2011

У меня есть проблема в 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 Ответ

1 голос
/ 05 июля 2011

Вы думали сделать это с анимацией?Если вы ориентируетесь на Honeycomb, вы можете использовать анимацию свойства ;для более ранних платформ вы можете использовать просмотр анимации .

Что касается сбоев, вы можете изменять только элементы пользовательского интерфейса из потока пользовательского интерфейса, а не из отдельного потока.Вам нужно будет дать ответный сигнал или использовать один из (очень хороших) помощников, например AsyncTask.

См .: http://developer.android.com/resources/articles/painless-threading.html

...