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

原文地址: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类是菜单工具类,提供一些菜单相关的通用工具方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值