Microsoft Band 2的图像和复选框

时间:2016-07-14 02:50:37

标签: android checkbox microsoft-band

我正在尝试使用Android Studio在Microsoft Band 2上创建一个磁贴。我想知道是否可以将图像添加到按钮,就像我可以在Android手机上一样。我的另一个问题是关于复选框。乐队上有复选框吗?如果没有,是否有另一种获得类似功能的方法?我需要用户能够针对单个问题单击多个内容。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分: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 (看到 负 边距 ) ,您可以创建按下按钮时图标图像变为可见的效果。那就是 图标位图 被定义为 具有所需图像的透明像素和不透明像素els Ë 哪里 。当。。。的时候 用户按下 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());
        } 
    }
};