Как заставить изменение изображения представления сразу после вызова setImageResource? - PullRequest
0 голосов
/ 28 декабря 2011

Я пытаюсь изменить изображение ImageView сразу после того, как щелкну по нему.

Я пытался использовать .setImageDrawable и вызывать .invalidate() для этого представления, но безуспешно.

Вероятно, я делаю это неправильно, но я пытаюсь щелкнуть изображение, установить нить на sleep на 2 секунды, а затем показать другое изображение пользователю.

* 1009код довольно прост и выглядит примерно так:
myImage.setImageResource(R.id.myPicture);
... computations
... put the thread to sleep for 2 seconds
myImage.setImageResource(R.id.newPicture);

, и пользователь не может видеть «myPicture» в течение этих 2 секунд сна, а затем он меняется на «newPicture»

Ответы [ 3 ]

2 голосов
/ 28 декабря 2011

Вы можете использовать sendMessageDelayed() метод handler для выполнения любой задачи с задержкой на определенное количество времени.и напишите логику для setImageDrawable внутри этого обработчика

См. пример кода

@Override
    public void onClick(View v) {

        Message msg = new Message();
        photoGridHandler.sendMessageDelayed(msg, 2000);// delay of 2000 milisecond = 2 second

    }


    private Handler photoGridHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {

            photoGrid.setImageDrawable(myImage);

        };
    };
0 голосов
/ 28 декабря 2011

У меня были похожие проблемы при смешивании потока пользовательского интерфейса и потока вычислений.Я бы порекомендовал попробовать AsyncTask и передать его imageView.Сделайте ваши вычисления в doInBackground асинхронной задачи, а затем в onPostExecute измените изображение.

http://developer.android.com/reference/android/os/AsyncTask.html

0 голосов
/ 28 декабря 2011

Попробуйте использовать image.setBackgroundResource(R.drawable.newimage);.Поместите оба изображения в папку drawable

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...