创建自定义布局(Creating Custom Layouts)

本文将介绍如何创建自定义通知以及使用可穿戴UI库来创建自定义布局
你同时还需要了解可穿戴设计准则(Wear Design Principles)
除了屏幕尺寸和瞬读能力(Glance ability)外,为可穿戴应用创建布局大体和普通手机一样。

创建自定义通知(Custom Notifications)

通常,你应该在手机应用上创建通知然后自动同步到可穿戴应用。这让你只需要构建通知一次,
就可以呈现于多种设备(不只是可穿戴,最终还包括汽车和电视),而不用为不同的设备参数分别进行设计。

如果标准通知风格对你不适用(比如NotificationCompat.BigTextStyle或者NotificationCompat.InboxStyle),
你可以使用一个自定义布局的活动来显示通知。你只能在可穿戴设备上创建和发送自定义通知,系统并不会把这些通知和手机进行同步。

注意: 当在可穿戴设备上创建自定义通知时,你可以使用标准通知APIs(API Level 20),而不是支持库(Support Library)。
1. 创建一个布局并设置为前台活动的内容视图(Content View)

public void onCreate(Bundle bundle){
...
setContentView(R.layout.notification_activity);
}

2. 在Android manifest文件中定义活动(Activity)的必要属性,以便活动能在可穿戴应用上下文流过程中被呈现。
你需要声明这个活动为可输出(exportable),可嵌入(embeddable),以及任务共用性(task affinity)为空。 
我们还建议设置方案(theme)为Theme.DeviceDefault.Light. 如:

<activity android:name="com.example.MyDisplayActivity"
android:exported="true"
android:allowEmbedded="true"
android:taskAffinity=""
android:theme="@android:style/Theme.DeviceDefault.Light" />

3. 为这个活动创建一个PendingIntent

Intent notificationIntent = new Intent(this, NotificationActivity.class);
PendingIntent notificationPendingIntent = PendingIntent.getActivity(this, , notificationIntent,PendingIntent.FLAG_UPDATE_CURRENT);

4. 构建一个通知(Notification)并调用setDisplayIntent()方法来提供这个PendingIntent。当用户阅读通知时,

系统会使用这个PendingIntent来启动相应的活动。

5. 使用notify()方法来发送通知。

注意: 当通知出现在主屏幕上时,系统使用产生于通知语意数据的标准模板来显示它。这个模板在所有的手表界面上表现良好。

当用户把通知向上滑动时,将看到该通知的自定义活动界面。

使用可穿戴UI库(Wearable UI Library)来创建布局

当你创建可穿戴应用时,有一个非官方的UI库会通过Android Studio工程向导被自动包含进来。 
你可以在项目构建文件build.gradle中添加如下语句:

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.android.support:wearable:+'
compile 'com.google.android.gms:play-services-wearable:+'
}

这个库可以用来方便的构建可穿戴应用界面。下面是一些主要的类:

  • BoxInsetLayout - 一个可以感知屏幕形状并使其子元素具中显示的FrameLayout;
  • CardFragment - 一个可扩展,可竖向滚动的卡片状界面组件;
  • CircledImageView - 圆形图片视图;
  • ConfirmationActivity - 用户操作完成时,确认信息动画活动界面。
  • DismissOverlayView - 一个长按消失式(long-press-to-dismiss)视图;
  • GridViewPager - 一个数据分页(可横向、竖向)显示布局管理器,你实现一个GridPagerAdapter来生成分页数据传给这个视图来显示;
  • GridPagerAdapter - 如上所述,这是一个分页数据生成器;
  • FragmentGridPagerAdapter - GridPagerAdapter的一个派生实现,用来把每页当作一个片段;
  • WatchViewStub - 一个可以填充具体布局的类,随设备屏幕形状而定;
  • WearableListView - ListView的一个替代版本,被优化用于小屏幕可穿戴设备。它显示一个垂直滚动列表项,在用户停止滚动时,自动捕捉最近的列表项。

你可以下载可穿戴应用编程支持库完整API参考文档,里面有每个界面组件的完整使用说明。

你也可以直接访问该文档在踏得网上的一个国内镜像:

Android:创建可穿戴应用 - 自定义布局的更多相关文章

  1. Android中ListView同过自定义布局并使用SimpleAdapter的方式实现数据的绑定

    1.listview的数据填充可以通过ArrayAdapter,SimpleAdapter,也可以是一个xml文件,但是ArrayAdapter与SimpleAdapter的区别是: 2 ArrayA ...

  2. Android 中的AlertDialog使用自定义布局

    Android使用指定的View开发弹窗功能 Android开发中进程会使用到我们的AlertDialog,但是比较可惜的是我们的Android原生的AlertDialog的效果又比较的简陋,这个时候 ...

  3. Android修行之路------ListView自定义布局

    主布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android= ...

  4. Android创建自定义的布局和控件

    Android的自带布局有framelayout.linerlayout.relativelayout,外加两个百分比布局,但是这些无法灵活的满足我们的需要,所以我们要自己自定义并引入自己的布局.首先 ...

  5. android wear开发之:创建可穿戴设备应用 - Creating Wearable Apps

    注:本文内容来自:https://developer.android.com/training/wearables/apps/index.html 翻译水平有限,如有疏漏,欢迎批评指教. 译:山人 创 ...

  6. Android学习笔记(九)——布局和控件的自定义

    //此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! View是 Android中一种最基本的 UI组件,它可以在屏幕上绘制一块矩形区域,并能响应这块区域的各种事件 ...

  7. Android:创建可穿戴应用 - 安装和依赖管理

    安装可穿戴应用 在开发时,你能够像一般移动应用一样直接把应用安装到可穿戴设备中. 使用adb install或者 Android Studio上的Play button. 当你准备好要公布时,你须要把 ...

  8. Android开发学习之路--UI之自定义布局和控件

    新的一年已经开始了,今天已经是初二了,两天没有学习了,还是要来继续学习下.一般手机的title都是actionbar,就像iphone一样可以后退,可以编辑.这里自定义布局就来实现下这个功能,首先准备 ...

  9. android 开发 使用自定义布局实现标题栏复用(标题栏内容自定义:使用代码实现和xml布局自定义属性2种办法实现)

    在个人学习的情况下可能很少使用自定义布局去实现大量复用的情况下,但是在一个开发工作的环境下就会使用到大量复用的自定义控件. 实现思维: 1.写一个xml的布局,用于标题栏的样式,并且添加在标题栏中你想 ...

随机推荐

  1. 亲测 安装windows7

    1.不安装更新 2.自定义高级(重新安装windows的新副版本) 3.安装到c盘 中间电脑会重启两次. 安装完之后 安装显卡驱动→这时会出现 家庭网络组选择即可.

  2. Android制作粒子爆炸特效

    简介 最近在闲逛的时候,发现了一款粒子爆炸特效的控件,觉得比较有意思,效果也不错. 但是代码不好扩展,也就是说如果要提供不同的爆炸效果,需要修改的地方比较多.于是我对源代码进行了一些重构,将爆炸流程和 ...

  3. Java基础知识强化之集合框架笔记23:ArrayList的实现原理

    1. ArrayList的实现原理: 这个可以直接参考网友的博客:http://www.cnblogs.com/ITtangtang/p/3948555.html

  4. html+css3实现网页时钟

    在网页上实现时钟功能,效果如右图所示: 运用到的关键技术有:css3中的旋转.旋转基点设置 旋转:transform:rotate(*deg) 旋转基点:transform-origin: x轴偏移 ...

  5. 怎样写好一份IT技术岗位的简历

    10月是校园招聘的旺季,很多应届毕业生都忙碌起来了,从CSDN笔试-面试文章的火热程度,从我收到的简历就看得出来. 我很久没有参与笔试和面试了,所以只能从“简历”来阐述下我的看法. 截至目前,已经帮8 ...

  6. ASP.NET MVC 中 ActionResult 和 ViewResult 在使用上的区别

    如果确认你返回的是一个视图(view),你可以直接返回类型为ViewResult. 如果你并不是很清楚,或者你根本不想去理解这些东西,你可以直接返回ActionResult

  7. java '相等'的比较.

    我们知道对于操作符 "==",如果比较的是原生类型(primitive type),表示的是 '值本身'是否相等;而对于引用类型(reference type),表示的是 '对象的 ...

  8. Maven搭建Spring+Struts2+Hibernate项目详解

    http://www.bubuko.com/infodetail-648898.html

  9. NgNice项目案例

    技术构架: 服务端技术:NodeJS + Express4.x + Mongodb + Mongoose 前端技术: AngularJS1.2.x + Bootstrap3.x 源码:https:// ...

  10. index full scan/index fast full scan/index range scan

    **************************1************************************* 索引状态:          valid.      N/A .    ...