Как я могу изменить изображение через каждые 5 секунд в Android - PullRequest
2 голосов
/ 16 марта 2020

Мне нужно менять изображение каждые 5 секунд, затем, когда мы касаемся ImageView, оно перестает изменяться, пока мы не отпустим касание.
Когда приложение go в OnPause установит состояние, оно приостанавливает автоматическое изменение изображение.

Я сохраняю KEY_ID и останавливаю исполняемый файл в onSaveInstanceState

Как я могу сделать это изменение автоматически? Ниже мой код в java.


public class MainActivity extends AppCompatActivity {

    private ImageView im_car;
    private Handler mHandler = new Handler();
    public static Integer[] mThumbeId = {R.drawable.first, R.drawable.second, R.drawable.thard};
    public int i = 0, id = 0;
    private String KEY_ID = "key_id";

    @SuppressLint("ClickableViewAccessibility")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        im_car = findViewById(R.id.im_car);

        mThumbRun.run();
        if (savedInstanceState != null) {
            i = savedInstanceState.getInt(KEY_ID);
        }
        im_car.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        mHandler.removeCallbacks(mThumbRun);
                        break;
                    case MotionEvent.ACTION_UP:
                        if (i!=0)
                        {
                            i = i-1;
                        }
                        else i=2;
                        mThumbRun.run();
                        break;
                }
                return false;
            }
        });

    }

    @Override
    protected void onRestart() {
        super.onRestart();
        if (i!=0)
        {
            i = i-1;
        }
        else i=2;
        mThumbRun.run();
    }

    Runnable mThumbRun = new Runnable() {
        @Override
        public void run() {
            im_car.setImageResource(mThumbeId[i]);
            i++;
            if (i >= mThumbeId.length) {
                i = 0;
            }
            mHandler.postDelayed(this, 5000);
        }
    };
}

1 Ответ

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

Вы можете создать сенсорный слушатель в вашем просмотре изображений.

Оставьте логическое значение, чтобы проверить, должно ли изображение измениться.

boolean imageChangePermission = true;


yourImageView.setOnTouchListener(new OnTouchListener () {
  public boolean onTouch(View view, MotionEvent event) {

    if (event.getAction() == android.view.MotionEvent.ACTION_DOWN) {
      Log.d("TouchTest", "Touch down");
    } 
    else if (event.getAction() == android.view.MotionEvent.ACTION_UP) {
      Log.d("TouchTest", "Touch up");
      imageChangePermission = false;
    }
  }
}

ACTION_DOWN - при первом касании

ACTION_MOVE - при перемещении пальца по экрану

ACTION_UP - при удалении пальца с экрана

Создать Обработчик, чтобы периодически вызывать ваш метод изменения изображения.

    Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            if(imageChangePermission) {
                changeImage();
            }
        }
    },5000); //Run after every 5 second
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...