#android #android-layout
#Android #android-макет
Вопрос:
Теперь я могу изменять изображение при нажатии onTouch, например, я нажимаю image1, чтобы сделать его невидимым и показать тот, который у меня есть под ним…
Теперь я хочу изменить изображение во время выполнения, в основном у меня есть массив, если array [i] = 5; тогда я хочу сделать image5 невидимым?
Как я могу это сделать?, Я попробовал это с
try{
Thread.sleep(2000);
}
catch
{
}
и он затемняет экран, а затем показывает фон через 2 секунды, но я никогда не вижу, чтобы изображение становилось невидимым;
я хотел бы иметь возможность сделать что-то вроде этого
for(int i=0;i < array.length; i )
{
if(array[i] == 1)
{
try
{
Thread.sleep(1000);
ImageView image = (ImageView)findById(myImage01);
image.setVisibility(View.INVISIBLE);
Thread.sleep(1000);
image.setVisibility(View.VISIBLE);
}
catch(InterruptedException e)
{
}
}
}
Вы поняли идею … прямо сейчас, если я сделаю это, экран затемнится, а затем вернется к основному макету и ничего не сделает : (
Заранее благодарю вас
Кстати, я новичок в Android (пожалуйста, подумайте: ( )
Ответ №1:
Давайте посмотрим, правильно ли я это понимаю. Вы пытаетесь отобразить изображение, сделав невидимым изображение, расположенное над ним?
Кажется, что более простым способом было бы изменить изображение фактического imageview, которое вы делаете невидимым.
image.setImageResource(R.drawable.<image>)
Где вы меняете имя изображения, помещенного в вашу папку res / drawable-hdpi / mdpi / ldpi.
Комментарии:
1. Звучит неплохо, но как насчет затемнения экрана при использовании Thread.sleep ? 🙁
2. Я предполагаю, что он отключается, потому что поток пользовательского интерфейса переведен в спящий режим.
Ответ №2:
Thread.sleep() — плохая идея, потому что она останавливает поток. Итак, если это пользовательский интерфейс, он больше не может обновлять экран. Вероятно, это то, что вы наблюдаете. Используйте что-то вроде
new Handler().postDelayed(new Runnable() {
void run() {
image.setVisibility(View.VISIBLE);
}
}, 1000);
Комментарии:
1. где бы я это реализовал, если бы в классе MyView?
2. вы могли бы создать метод
switchImage
, который переключает видимость изображения или изменяет само изображение. Затем вы должны вызватьswitchImage
внутриrun
метода обработчика. Также вы бы снова вызвали Handler.postDelayed там.