是否有CardScrollView或CardScrollAdapter让我知道当用户从一张卡移动到另一张?
最初我使用 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 ()