Android:创建可穿戴应用 - 自定义布局
创建自定义布局(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:创建可穿戴应用 - 自定义布局的更多相关文章
- Android中ListView同过自定义布局并使用SimpleAdapter的方式实现数据的绑定
1.listview的数据填充可以通过ArrayAdapter,SimpleAdapter,也可以是一个xml文件,但是ArrayAdapter与SimpleAdapter的区别是: 2 ArrayA ...
- Android 中的AlertDialog使用自定义布局
Android使用指定的View开发弹窗功能 Android开发中进程会使用到我们的AlertDialog,但是比较可惜的是我们的Android原生的AlertDialog的效果又比较的简陋,这个时候 ...
- Android修行之路------ListView自定义布局
主布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android= ...
- Android创建自定义的布局和控件
Android的自带布局有framelayout.linerlayout.relativelayout,外加两个百分比布局,但是这些无法灵活的满足我们的需要,所以我们要自己自定义并引入自己的布局.首先 ...
- android wear开发之:创建可穿戴设备应用 - Creating Wearable Apps
注:本文内容来自:https://developer.android.com/training/wearables/apps/index.html 翻译水平有限,如有疏漏,欢迎批评指教. 译:山人 创 ...
- Android学习笔记(九)——布局和控件的自定义
//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! View是 Android中一种最基本的 UI组件,它可以在屏幕上绘制一块矩形区域,并能响应这块区域的各种事件 ...
- Android:创建可穿戴应用 - 安装和依赖管理
安装可穿戴应用 在开发时,你能够像一般移动应用一样直接把应用安装到可穿戴设备中. 使用adb install或者 Android Studio上的Play button. 当你准备好要公布时,你须要把 ...
- Android开发学习之路--UI之自定义布局和控件
新的一年已经开始了,今天已经是初二了,两天没有学习了,还是要来继续学习下.一般手机的title都是actionbar,就像iphone一样可以后退,可以编辑.这里自定义布局就来实现下这个功能,首先准备 ...
- android 开发 使用自定义布局实现标题栏复用(标题栏内容自定义:使用代码实现和xml布局自定义属性2种办法实现)
在个人学习的情况下可能很少使用自定义布局去实现大量复用的情况下,但是在一个开发工作的环境下就会使用到大量复用的自定义控件. 实现思维: 1.写一个xml的布局,用于标题栏的样式,并且添加在标题栏中你想 ...
随机推荐
- 解读dbcp自动重连那些事---转载
http://agapple.iteye.com/blog/791943 可以后另一篇做对比:http://agapple.iteye.com/blog/772507 同样的内容,不同的描述方式,不一 ...
- Java SE 6 新特性: 编译器 API
新 API 功能简介 JDK 6 提供了在运行时调用编译器的 API,后面我们将假设把此 API 应用在 JSP 技术中.在传统的 JSP 技术中,服务器处理 JSP 通常需要进行下面 6 个步骤: ...
- Ubuntu16.04LTS安装
1. 制作u盘启动盘 下载ubuntu-16.04-desktop-amd64.iso文件后,使用u盘启动盘制作工具:Win32DiskImager(14.04LTS后都需要用到这工具制作:https ...
- Vim键盘图与命令图解
- C#总结项目《影院售票系统》编写总结一
C#学习经历从基本语法结构到窗体再到面向对象终于走完了.NET初级程序员的道路,做为品德优良好学生更不能落下课程的总结项目-某某鸟<影院售票系统>.用了大概一天半的时间做完这个练手项目,先 ...
- new Integer(1)和Integer.valueOf(1)的区别
java.lang包中的Integer类是我们比较常用的类,比如以下代码: Integer a=new Integer(1) Integer a=Integer.valueOf(1); 两个都是得到一 ...
- java I/O的基本使用
1.什么是I/O a.I/O也称为:输入输出,可以理解为In,Out b.I/O流:读取键盘键入的字符,硬盘上的文件 c.处理数据的类型分类:字节流.字符流 字节流:以Stream结尾的,可以处理图片 ...
- classpath and path.
simply talk about the <path> and the <classpath> in java development. when the <path& ...
- powerdesigner设置唯一键,但不是主键的方式
[转载]http://blog.csdn.net/cnham/article/details/6676650 唯一约束 唯一约束与创建唯一索引基本上是一回事,因为在创建唯一约束的时候,系统会创建对应的 ...
- .net开发windows服务
最近一个月都异常的繁忙,项目进度非常的紧,回头看看自己的blog,整整一个5月都没有一篇文章,非常惭愧,现在补几篇文章,介绍一下我最近关注的技术.这篇文章将介绍Windows服务程序的开发.摘要:本文 ...