1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/belinwu-doorbell

Клонировать/Скачать
DOC.md 9.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 05:08 620899e

Дверной звонок

Как вы знаете из файла README, существует 3 вида дверных звонков.

  • Активный дверной звонок.
  • Обратный дверной звонок.
  • Дверной дверной звонок.

Активный дверной звонок

Активные дверные звонки используются для запуска активностей.

Создание

В классе Doorbell определены 4 статических метода для создания активных дверных звонков:

  • Doorbell.with(Context);
  • Doorbell.with(Activity);
  • Doorbbell.with(Fragment);
  • Doorbell.with(Starter).

Все они возвращают экземпляр класса ActivityDoorbell.Builder, чтобы построить активный дверной звонок с некоторыми методами, перечисленными ниже в цепочке.

С учётом класса активности для запуска

.start(Activity.class) // или
.start(Intent) // или
.start(Activity1.class, Activity2.class, ...) // или
.start(Intent, Intent, ...)

Устанавливает код запроса

.requestCode(int)

Когда указан и действителен код запроса, то будет вызван метод .startActivityForResult() стартера.

Использование условия

.condition(boolean) // или
.condition(Condtion)

Если условие не указано или Condition равно нулю, то условие дверного звонка всегда будет выполнено.

Слушатели звонка

Существует 4 типа слушателей, которые будут уведомлены.

  1. .ring().
  2. .ring(OnAllowListener).
  3. .ring(OnBlockListener).
  4. .ring(RingListener).

При передаче необязательного условия порядок вызова обратных вызовов следующий:

  1. Вызывается метод onAllow() связанной двери, если он задан.
  2. Вызывается обратный вызов слушателя звонка onAllow(), если он задан.
  3. Запускается активность.
  4. Вызывается метод onComplete() связанной двери, если он задан.
  5. Вызывается обратный вызов слушателя звонка onComplete(), если он задан.

В противном случае вызывается метод onBlock() связанной двери и затем вызывается обратный вызов onBlock() слушателя, если он задан.

Простой слушатель звонка

Есть удобный класс SimpleRingListener, который можно расширить, если вы хотите прослушивать только подмножество обратных вызовов звонка: onAllow(), onComplete() или onBlock().

Настройка двери для участия

.door(Door)

После вызова метода .door() и если заданный параметр двери не равен нулю, условие будет проигнорировано.

Добавляет дополнительные данные

.extra(String, int)
.extra(String, boolean)
.extra(String, long)
.extra(String, float)
.extra(String, double)
.extra(String, String)
// ...
.extras(Bundle)

Обратите внимание: если вы запускаете несколько активностей и эти методы связаны, все намерения будут затронуты.

Задаёт дополнительные параметры

Эта функция требует Android SDK API >= 16.

.options(Bundle)

Входящий или исходящий переход

.enter(int) // или
.exit(int) // или
.transition(int, int)

Определяет стартер

Возможно, ваши приложения используют MVP, и вы хотите запускать активности в классах Presenter. Поэтому пусть ваш класс Presenter реализует интерфейс Starter.

public class Presenter implements Starter {
  private Starter starter = Starters.newStarter(fragment);

  @Override
  public void startActivity(Intent intent, Bundle options) {
    // Take care of NPE
    starter.startActivity(intent, options);
  }

  @Override
  public void startActivityForResult(Intent intent, int requestCode, Bundle options) {
    // Take care of NPE
    starter.startActivityForResult(intent, requestCode, options);
  }

  @Override
  public void startActivities(Intent[] intents, Bundle options) {
    starter.startActivities(intents, options);
  }

  @Nullable
  @Override
  public Activity getActivity() {
    // Take care of NPE
    return starter.getActivity();
  }

  @Override
  public int getEnter() {
    return starter.getEnter();
  }

  @Override
  public int getExit() {
    return starter.getEnter();
  }
}

А затем создайте дверной звонок с презентатором с помощью: Doorbell.with(presenter);

Обратный дверной звонок

Обратные дверные звонки используются для вызова обратных вызовов с обязательным условием.

Создание

В классе Doorbell определены 3 статических метода для создания обратных дверных звонков:

  • Doorbell.create(boolean);
  • Doorbell.create(Condition);
  • Doorbell.create(Door) — настройка двери для участия и также как условие звонка. Все они возвращают экземпляр класса CallbackDoorbell.Builder для создания обратного вызова.

Слушатели звонка

Существует 3 вида слушателей, которые должны быть уведомлены.

  • .ring(OnAllowListener)
  • .ring(OnBlockListener)
  • .ring(RingListener)

Когда условие выполнено, порядок вызова обратных вызовов следующий:

  1. Вызывается onAllow() связанной двери, если он задан.
  2. Вызывается обратный вызов onAllow() слушателя звонка, если он задан.
  3. Вызывается onComplete() связанной двери, если он задан.
  4. Вызывается обратный вызов onComplete() слушателя звонка, если он задан.

В противном случае вызывается onBlock() связанной двери, если он задан, а затем вызывается обратный вызов onBlock() слушателя, если он задан.

Дверной звонок

Дверной звонок используется для того, чтобы звонить в двери.

Определение вашей двери

Мы определяем логическую дверь, которая ничего не делает, когда условие выполняется, или выдаёт сообщение, когда заблокирована.

  /**
   * Дверь для подтверждения входа пользователя.
   */
  public class LoginDoor implements Door {
    @Override
    public boolean test() {
      return condition;
    }

    @Override
    public void onAllow() {
    }
    
    @Override
    public void onComplete() {
    }

    @Override
    public void onBlock() {
      toask("Сначала вы должны войти!");
    }
  }

Звонок в дверь

Doorbell.ring(new LoginDoor());

Когда условие логической двери выполнено, будет вызван метод onAllow(), в противном случае будет вызван onBlock().

Простая дверь

Существует удобный класс под названием SimpleDoor, который можно расширить, если вы хотите прослушивать только подмножество обратных вызовов.

Здесь логическая дверь не нуждается в методах onAllow() и onComplete(), потому что они ничего не делают. Поэтому мы можем определить логическую дверь как расширение SimpleDoor.

  /**
   * Дверь для подтверждения входа пользователя.
   */
  public class LoginDoor extends SimpleDoor {
    @Override
    public boolean test() {
      return condition;
    }

    @Override
    public void onBlock() {
      toask("Сначала вы должны войти!");
    }
  }

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/belinwu-doorbell.git
git@api.gitlife.ru:oschina-mirror/belinwu-doorbell.git
oschina-mirror
belinwu-doorbell
belinwu-doorbell
master