Работа с таймером. Выполнить код через время

196
07 декабря 2017, 00:16

Приветствую. Работаю в Android Studio.

Нужно сделать так, чтобы цвет activity стал красным и сразу же через 500 миллисекунд (допустим, можно и через секунду) цвет стал таким, как раньше - белым или какой-там стандартный цвет.

public class AllotmentActivity extends AppCompatActivity {
    private RelativeLayout mRelativeLayout;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.allotment_activity);
    }
    public void no(View view){
        mRelativeLayout = (RelativeLayout) findViewById(R.id.rel);
        mRelativeLayout.setBackgroundColor(Color.RED);
//        SystemClock.sleep(500);
//        mRelativeLayout.setBackgroundColor(Color.WHITE);
    }

Здесь, в этом коде, меняется только цвет activity на красный. Но нужно еще чтобы через некоторое время цвет снова поменялся на тот, что был изначально.

Пробовал с помощью SystemClock.sleep(500);, но тогда получается не то, что нужно...

Answer 1

Попробуйте через Handler:

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {

             // через  5 сек выполниться действие описанное тут 
                mRelativeLayout.setBackgroundColor(Color.WHITE);

        }
    }, 5000);
Answer 2
public void no(View view){
    mRelativeLayout = (RelativeLayout) findViewById(R.id.rel);
    int color = Color.TRANSPARENT;
    Drawable background = mRelativeLayout.getBackground();
    if (background instanceof ColorDrawable)
        color = ((ColorDrawable) background).getColor();
    mRelativeLayout.setBackgroundColor(Color.RED);
    mRelativeLayout.postDelayed(() -> mRelativeLayout.setBackgroundColor(color), 500);
}
READ ALSO
с++ define чем заменить в Java

с++ define чем заменить в Java

народ вот в С++ есть define а что в джаве чем заменит ?

229
Способ увеличение отрезка в два раза

Способ увеличение отрезка в два раза

У меня задание увеличить отрезок в два раза

229
EXTRA_SHORTCUT_INTENT deprecated в Android Oreo - чем заменить

EXTRA_SHORTCUT_INTENT deprecated в Android Oreo - чем заменить

Собственно говоря весь вопрос вынесен в заголовок

221
Java Map - как вывести значение более шести

Java Map - как вывести значение более шести

Нужно представить класс "User" в виде ассоциативного массива (логин/пароль)И вывести пользователей с длинной пароля более 6

191