您的位置:首页 > 其它

谷歌眼镜GDK开发指南之活动卡片中显示菜单

2014-01-21 22:24 375 查看
原文地址:http://bbs.seacat.cn/thread-897-1-1.html

创建并显示一个菜单

注意:Glass菜单不支持可选项



创建菜单资源

创建菜单资源和Android平台一样,但对于Glass还有些原则:

1、对于每个菜单项,提供一个50*50的图标。这个菜单图标一定要是白色,透明背景。

2、使用短名称来描述行为和用例。用祈使句动词就很好。(例如分享,回复全部)。

3、Glass不显示没有菜单项的活动卡片。至少要提供一个停止菜单,这样用户可以从时间轴中删除活动卡片

4、CheckBox控件不支持

<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_item_1"
android:title="@string/Menu_Item_1"       <!-- must have "Stop" menu item -->
android:icon="@drawable/menu_item_1_icon" />   <!-- white on transparent icon -->
</menu>


创建一个activity来处理菜单的回调

你必须定义一个菜单activity,当用户点击菜单的时候,让你的活动菜单能调用它。

重写下面这些activity的回调方法更适当:

onCreateOptionsMenu() 解析 XML 菜单资源.

onResume() 当activity获得焦点的时候显示菜单

onPrepareOptionsMenu() 若需要则显示或隐藏菜单。例如你可以根据用户的操作或展现的数据不同而显示不同的菜单。

onOptionsItemSelected() 处理用户的选择

onOptionsMenuClosed() 结束activity,以便他不再显示在活动卡片上。

如果点了关闭菜单项或者下滑操作时,一定要适当的关闭activity:

/**
* Activity showing the options menu.
*/
public class MenuActivity extends Activity {

@Override
public void onResume() {
super.onResume();
openOptionsMenu();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.stopwatch, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection.
switch (item.getItemId()) {
case R.id.stop:
stopService(new Intent(this, StopwatchService.class));
return true;
default:
return super.onOptionsItemSelected(item);
}
}

@Override
public void onOptionsMenuClosed(Menu menu) {
// Nothing else to do, closing the activity.
finish();
}
}


使menu activity透明

menu activity会覆盖在活动卡片上:

1、创建一个res/values/styles.xml 文件并声明一个style使activity背景透明:

<resources>
<style name="MenuTheme" parent="@android:style/Theme.DeviceDefault">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowAnimationStyle">@null</item>
</style>
</resources>


2、在你的AndroidManifest.xml 文件,配置menu
activity的主题:

<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
...
<application ... >
...
<activity
android:name=".MenuActivity"
android:theme="@style/MenuTheme"
...>
</activity>
</application>

</manifest>


显示菜单

通过调用setAction(),提供一个
PendingIntent。当用户轻触卡片,pending intent将启动menu activity

Intent menuIntent = new Intent(this, MenuActivity.class);
mLiveCard.setAction(PendingIntent.getActivity(this, 0, menuIntent, 0));
mLiveCard.publish(LiveCard.PublishMode.REVEAL); // or SILENT


Menu工具类

MenuUtils类是菜单工具类,提供一些菜单相关的通用工具方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: