Как сделать кнопку неактивной на несколько секунд послее её нажатия и сохранить в sharedPreferences?

Для реализации данного функционала в Android, вам потребуется немного кода. Вот шаги для достижения вашей задачи:

1. В вашем xml-файле разметки (например, activity_main.xml) добавьте кнопку следующим образом:

 <Button
     android:id="@+id/button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="Нажми меня" />

2. В файле MainActivity.java найдите вашу кнопку и добавьте следующий код:

 Button button = findViewById(R.id.button);
 button.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
         // делаем кнопку неактивной
         button.setEnabled(false);

         // сохраняем время нажатия в SharedPreferences
         long currentTime = System.currentTimeMillis();
         SharedPreferences sharedPreferences = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
         SharedPreferences.Editor editor = sharedPreferences.edit();
         editor.putLong("lastClickTime", currentTime);
         editor.apply();

         // запускаем отдельный поток с таймером на 5 секунд
         new Thread(new Runnable() {
             @Override
             public void run() {
                 try {
                     Thread.sleep(5000); // задержка на 5 секунд
                 } catch (InterruptedException e) {
                     e.printStackTrace();
                 }

                 // восстанавливаем активность кнопки
                 runOnUiThread(new Runnable() {
                     @Override
                     public void run() {
                         button.setEnabled(true);
                     }
                 });
             }
         }).start();
     }
 });

3. Чтобы получить время последнего нажатия кнопки из SharedPreferences и проверить, прошло ли уже 5 секунд, добавьте следующий код в метод onCreate() вашего MainActivity.java:

 SharedPreferences sharedPreferences = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
 long lastClickTime = sharedPreferences.getLong("lastClickTime", 0);
 long currentTime = System.currentTimeMillis();

 // если кнопка была нажата раньше, чем 5 секунд назад, делаем ее неактивной
 if (currentTime - lastClickTime < 5000) {
     button.setEnabled(false);

     // запускаем таймер на оставшееся время до 5 секунд
     new CountDownTimer(currentTime - lastClickTime, 1000) {
         @Override
         public void onTick(long millisUntilFinished) {
             // здесь можно обновить UI со счетчиком времени
         }

         @Override
         public void onFinish() {
             button.setEnabled(true);
         }
     }.start();
 }

Таким образом, мы сначала делаем кнопку неактивной и сохраняем в SharedPreferences время ее нажатия. Затем мы запускаем отдельный поток с таймером на 5 секунд, после чего кнопка становится снова активной. Если кнопка была нажата в течение последних 5 секунд, мы также делаем кнопку неактивной и запускаем таймер на оставшееся время до 5 секунд.

Обратите внимание, что вы должны добавить разрешение на использование SharedPreferences в вашем файле манифеста:

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />