如何在谷歌眼镜应用程序中知道用户已移动到新卡



是否有CardScrollViewCardScrollAdapter让我知道当用户从一张卡移动到另一张?

最初我使用 gestredetector 来检测向左或向右滑动,但在谷歌眼镜应用程序中,用户可以使用,例如,两指滑动快速平移和移动到远处的卡(甚至语音控制)。

比起追踪所有这些方向事件,肯定有更好的方法能够准确地知道新纸牌何时出现。

我知道CardScrollView.getSelectedItemPosition()给了我当前卡在视图中,但不确切地说,当一个新的卡显示。

我还认为CardScrollAdapter.getView()将在每次显示新卡时运行,但在Glass应用程序中,它在活动执行开始时运行一次。

我的眼镜是在我的存储的某处,所以我现在不能测试这个,但你可以尝试onDetachedToWindow和onAttachedToWindow。可能是这样的:

private View buildView() {
    CardBuilder card = new CardBuilder(this, CardBuilder.Layout.TEXT);
    card.setText(R.string.whatever);
    View view = card.getView();
    view.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
        @Override
        public void onViewAttachedToWindow(View v) {
        }
        @Override
        public void onViewDetachedFromWindow(View v) {
        }
    });
    return view;
}

卡片生命周期也可能给你一些想法。

解决方案实际上是在文档中建议的@EntryLevelDev

CardScrollView用下列从AdapterView继承的监听器接口通知你:

AdapterView。OnItemSelectedListener -在用户完成滚动列表并选定一个项目后选中一个项目。

: https://developers.google.com/glass/develop/gdk/reference/com/google/android/glass/widget/CardScrollView onAttachedToWindow ()