2016-07-14 2 views
0

Я пытаюсь создать плитку в Microsoft Band 2 с помощью Android Studio. Мне было интересно, можно ли добавлять изображения к кнопке, как я мог бы на Android-телефоне. Мой другой вопрос касается флажков. Есть ли флажки в группе? Если нет другого способа получить аналогичную функциональность? Мне нужно, чтобы пользователи могли щелкнуть несколько вещей по одному вопросу. Любая помощь будет принята с благодарностью.Изображения и флажки с Microsoft Band 2

ответ

1

Для флажков я бы сделал макет, где у вас есть небольшая текстовая кнопка рядом с большей текстовой кнопкой в ​​макете. Когда нажата кнопка большого текста, вызовите функцию обновления из вашего ресивера, которая изменит текст кнопки меньшего размера (возможно, звездочка или какой-либо другой символ, который выглядит как маркер, и кажется, что он появляется и исчезает). Например, ваша функция обновления может выглядеть следующим образом (небольшой модификацией из кода примера плитки, приведенной в SDK):

private final int bulletTextId = 12; 
private final int textButtonId = 21; 
private boolean isActiveBullet = false; 

private void onButtonClicked(int clickedID) { 
    switch (clickedID) { 
     case textButtonId: 
      String text = ""; 

      isActiveBullet = !isActiveBullet; 
      if (isActiveBullet) text = "*"; 

      try { 
       client.getTileManager().setPages(tileId, 
         new PageData(pageId1, 0) 
           .update(new TextBlockData(bulletTextId, text)) 
           .update(new TextButtonData(textButtonId, "Text Button"))); 
      } catch (BandIOException e) {e.printStackTrace();} 

      break; 
     default: 
      Log.e("", "Unknown button press received"); 
    } 
} 

Для нескольких кнопок может понадобиться карта кнопку булева и переключить соответствующие них. Если вы не можете понять это, прокомментируйте, и я продолжу.

Первоначально я думал, что имеет смысл изменить цвет фона, но это не похоже на поддержку sdk.

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

Редактировать: Я нашел это вскоре после публикации. Похоже, вы можете использовать растровые изображения в качестве масок, но я не уверен, как это сделать. Надеюсь, кто-то придет и сказать нам, потому что я хотел бы знать, тоже :)

«8.5.1 иконки Используется как FilledButton Маски Определяя Icon растровое изображение, которое действует в качестве маски и затем накладывая что Икона над FilledButton (см отрицательных Поля ) , вы можете создать эффект Icon изображений становятся видимым при нажатии кнопки. То есть, Иконки растрового определяется иметь прозрачный пиксель s для желаемого изображения и непрозрачные пиксели els e где . Когда пользователь нажимает FilledButton , тем FilledButton цвет меняется но показывает через только в прозрачные участки икона растрового. "

А вот другой соответствующий код, если вы хотите:

private PageLayout createButtonLayout() { 
    return new PageLayout(
      new ScrollFlowPanel(15, 0, 260, 105, FlowPanelOrientation.HORIZONTAL) 
        .addElements(new TextBlock(0, 0, 20, 45, TextBlockFont.MEDIUM) 
          .setMargins(5, 0, 0, 0) 
          .setId(bulletTextId)) 
        .addElements(new TextButton(0, 0, 190, 45).setMargins(5, 0, 0, 0) 
          .setId(textButtonId).setPressedColor(Color.BLUE)) 
    ); 
} 

private BroadcastReceiver messageReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (intent.getAction() == TileEvent.ACTION_TILE_OPENED) { 
     } else if (intent.getAction() == TileEvent.ACTION_TILE_CLOSED) { 
     } 

     /* ***** THIS IS THE ONLY EVENT WE ACTUALLY CARE ABOUT ***** */ 
     else if (intent.getAction() == TileEvent.ACTION_TILE_BUTTON_PRESSED) { 
      TileButtonEvent buttonData = intent.getParcelableExtra(TileEvent.TILE_EVENT_DATA); 
      appendToUI("button is " + isActiveBullet + " "); 
      onButtonClicked(buttonData.getElementID()); 
     } 
    } 
}; 
Смежные вопросы