2016-07-14 2 views
0

Je suis en train de créer une tuile sur le Microsoft Band 2 Android Studio. Je me demandais s'il est possible d'ajouter des images à un bouton comme je le ferais sur un téléphone Android. Mon autre question concerne les cases à cocher. Y a-t-il des cases à cocher sur le groupe? Sinon, y a-t-il un autre moyen d'obtenir des fonctionnalités similaires? J'ai besoin que les utilisateurs puissent cliquer sur plusieurs choses pour une seule question. Toute aide serait grandement appréciée.Images et avec cases à cocher Microsoft Band 2

Répondre

1

Pour les cases à cocher je faire une mise en page où vous avez un petit bouton de texte à côté d'un bouton texte plus large dans une mise en page. Lorsque vous cliquez sur le gros bouton de texte, appelez une fonction de mise à jour de votre récepteur qui modifie le texte du plus petit bouton (éventuellement un astérisque ou un autre caractère qui ressemble à une puce et semble apparaître et disparaître). Par exemple, votre fonction de mise à jour pourrait ressembler à ceci (légère modification du code exemple de tuiles données dans le 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"); 
    } 
} 

Pour plusieurs boutons vous pourriez avoir besoin d'une carte de bouton pour booléens et changer les correspondants. Si vous ne pouvez pas comprendre cela, commentez et je ferai un suivi. À l'origine, je pensais qu'il serait logique de changer la couleur d'arrière-plan, mais cela ne semble pas être pris en charge par le SDK. En ce qui concerne l'utilisation d'une image pour l'arrière-plan, je ne pense pas que ce soit actuellement pris en charge, juste en regardant les définitions de fonctions dans le code source de sdk, mais j'aimerais vraiment le savoir aussi.

Modifier: J'ai trouvé ceci peu de temps après l'avoir posté. Il semble que vous pouvez utiliser des bitmaps comme masques, mais je ne suis pas sûr de savoir comment faire cela. Espérons que quelqu'un va venir et nous dire parce que je voudrais savoir aussi :)

« 8.5.1 Icônes Utilisé comme FilledButton Masques En définissant un bitmap d'icône qui agit comme un masque et puis que superposant icône sur une FilledButton (voir négatifs marges ) , vous pouvez créer l'effet de l'image de l'icône devient visible lorsque le bouton est enfoncé. Ainsi, l'icône bitmap est défini avoir pixel transparent s pour l'image désirée, et des pixels opaques els e où . Lorsque l'utilisateur appuie sur le FilledButton, traversant FilledButton change de couleur mais ne montre que les parties transparentes de le bitmap d'icône. "

Et voici un autre code approprié si vous le souhaitez:

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()); 
     } 
    } 
};