Как нарисовать слот для усложнения на циферблате?

Я разрабатываю свой собственный циферблат для Android, и до сих пор все работает хорошо. Теперь я пытаюсь создать свое первое усложнение, чтобы показать секунды. Я знаю, что мне нужно создать свой собственный поставщик данных для этой сложности. Я уже видел несколько видео на YouTube и читал документацию. Мои вопросы:

  • Как я могу создать слот для усложнения, который будет отображаться на моем лице what?
  • Как я могу установить его положение на циферблате?
  • Придется ли мне создавать активность для этого?

person Pablo Darde    schedule 21.10.2018    source источник


Ответы (1)


Как я могу создать слот для усложнения, который будет отображаться на моем лице what?

Самый простой способ — использовать ComplicaitonDrawable. Он будет обрабатывать всю логику того, что отображать (наклон, текст, значок и т. д.) для вас. Его также можно стилизовать, чтобы он гармонировал с вашим циферблатом. Обязательно заполняйте его данными усложнения всякий раз, когда ваш циферблат получает обратный вызов:

@Override
public void onComplicationDataUpdate(int id, ComplicationData data) {
    mComplicationDrawable.setComplicationData(data);
}

Как я могу установить его положение на циферблате?

ComplicationDrawable можно легко нарисовать в любом месте холста:

mComplicationDrawable.setBounds(myComplicationBounds);
mComplicationDrawable.draw(canvas, currentTimeMillis);

Придется ли мне создавать активность для этого?

Вам не нужно действие, чтобы установить положение слота усложнения (если только вы не хотите, чтобы пользователь мог выбирать/изменять положение).

Вам нужна активность настройки, чтобы пользователь мог выбрать поставщика данных для вашего слота усложнения. Google был достаточно любезен, чтобы предоставить образец циферблата, который показывает рекомендуемый способ сделать это. Он доступен на GitHub.

person TofferJ    schedule 22.10.2018