我正在为Google Glass编写一个简单的应用程序。有三个活动,每个活动处理一张静态卡。每张卡都有自己的菜单。现在我在谷歌开发者看来,刷卡应该像Android智能手机上的后退按钮一样工作,即从堆栈调用最后一个活动。现在我的问题是这只适用于发射器'活动。
ok-glass menu -> activity_1 -> ok-glass menu
工作正常,但是
activity_1 -> activity_2 -> activity_1
没有。
activity_3也是如此。但是,如果从activity_3调用activity_1,则向下滑动将按预期运行。 (activity_3 -> activity_1 -> activity_3
有效)。
此外,向下滑动可在所有活动的菜单中使用。
现在我有几个问题:
onKeyDown
方法或onClicklistener
?我花了3个小时在这个问题上搜索互联网。我尝试调用super.onBackPressed
,实现各种类型的侦听器并在视图上使用setFocusMethod
。
任何有关如何在整个应用程序中始终如一地工作的建议都非常感谢。
提前谢谢!
您可以在下面找到其中一项活动的代码,这些活动在这三项活动中看起来相似。
public class Test1Activity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View test1 = new CardBuilder(getBaseContext(), CardBuilder.Layout.CAPTION)
.setText("test1")
.getView();
setContentView(test1);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
openOptionsMenu();
return true;
}
return false;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.test1, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId()) {
case R.id.test1_ack:
Intent intent = new Intent(this, Test2Activity.class);
startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
答案 0 :(得分:2)
- 每张卡片使用单独的活动的方法是正确的吗?
醇>
这取决于。在Android中,活动代表用户可以做的单一,专注的事情。所以,如果您的活动/卡片不相关,那就没问题。 如果是,您可以使用CardScrollView在一个活动中将卡组合在一起。 http://developer.android.com/training/design-navigation/descendant-lateral.html也可能有所帮助。 (它解释了如何将信息组合在一起。)
- 是否应在onKeyDown方法或onClicklistener处理用户输入?
醇>
您应该使用GestureDetector。见https://developers.google.com/glass/develop/gdk/touch。 onKeyDown功能有限,因为它不是为Glass设计的。我可能错了,但我认为你只能用onKeyDown检测点击。
- 是否有必要覆盖向下滑动手势,使其按预期方式工作(返回上一个活动)?
醇>
这是默认行为(无标记)。如果您在启动活动2时未在活动1上调用finish(),则应该可以返回而不会覆盖任何方法。 请参阅:Android: Go back to previous activity。 您还可以在清单中使用android:parentActivityName标记来指定父活动。 (http://developer.android.com/guide/topics/manifest/activity-element.html)
- 不相关:我的所有菜单只包含一个选项,用作用户确认他想要继续的一种选项。 (即 打电话给下一个活动)。这是最佳做法吗?
醇>
它有点奇怪,但没有错。无论如何,每次用户做某事时,您都不需要确认。 我不是一个用户体验设计师,但我注意到内置应用程序,在Glass上确认/确认屏幕并不常见。 例如,当您发送短信时,没有确认对话框。我想设计团队试图摆脱不必要的互动。 尝试让菜单代表一个动作,以便用户前进/或在每次点击时执行某些操作。
另见https://developers.google.com/glass/tools-downloads/glassware-flow-designer。
注意:我不是用户体验设计方面的专家,所以不要相信我:)
You can check out my example on GitHub。我实现了下面显示的流程。