Измените ImageView через некоторое время, которое выбрано в Spinner - PullRequest
1 голос
/ 22 марта 2020

Я хотел бы иметь возможность выбрать элемент из Spinner (в любое время), и через несколько секунд изображение в ImageView изменится в другом изображении. У меня есть два счетчика, и я хочу, чтобы таймер запускался после нажатия кнопки.

Мой код в Main3Activity:

public class Main3Activity extends AppCompatActivity {

    private Spinner spinner;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


        Spinner mySpinner = (Spinner) findViewById(R.id.spinner_an);

        ArrayAdapter<String> myAdapter = new ArrayAdapter<String>(Main3Activity.this,
                android.R.layout.simple_list_item_1, getResources().getStringArray(R.array.sec_on));
        myAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        mySpinner.setAdapter(myAdapter);

        Spinner mySpinner2 = (Spinner) findViewById(R.id.spinner_aus);

        ArrayAdapter<String> myAdapter2 = new ArrayAdapter<String>(Main3Activity.this,
                android.R.layout.simple_list_item_1, getResources().getStringArray(R.array.sec_off));
        myAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        mySpinner2.setAdapter(myAdapter2);

    }
}

Мой код в строках. xml:

    <string-array name="sec_on">
        <item>1 sec.</item>
        <item>2 sec.</item>
        <item>3 sec.</item>
        <item>4 sec.</item>
        <item>5 sec.</item>
        <item>10 sec.</item>
        <item>20 sec.</item>
        <item>30 sec.</item>
    </string-array>

    <string-array name="sec_off">
        <item>1 sec.</item>
        <item>2 sec.</item>
        <item>3 sec.</item>
        <item>4 sec.</item>
        <item>5 sec.</item>
        <item>10 sec.</item>
        <item>20 sec.</item>
        <item>30 sec.</item>
    </string-array>

Любая помощь будет оценена. И извините за плохой Энгли sh.

1 Ответ

0 голосов
/ 22 марта 2020

Вы можете использовать Таймер и TimerTask

private void selected(final int position){
    int time;
    switch (position){
        case 1:
            time = 1000;
            break;
        case 2:
            time = 2000;
            break;
        case 3:
            time = 3000;
            break;
        case 4:
            time = 4000;
            break;
        case 5:
            time = 5000;
            break;
        case 6:
            time = 10000;
            break;
        case 7:
            time = 20000;
            break;
        case 8:
            time = 30000;
            break;
        default:
            time = 0;
            break;
    }

    Timer timer = new Timer();
    TimerTask task = new TimerTask() {
        @Override
        public void run() {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    ImageView img = (ImageView) findViewById(R.id.img_1);
                    img.setBackgroundResource(R.drawable.ic_launcher_background);
                }
            });
        }
    };

    timer.schedule(task, time);
}
...