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的布局,用于标题栏的样式,并且添加在标题栏中你想 ...
随机推荐
- 字符串 赋值 以及gets
我们知道字符串用字符数组或用指针实现,但是在赋值的时候产生了不少疑惑 使用方法一: char a[ ]={"I LOVE YOU!"}; 但是以下这样就是错的: char a[20 ...
- [转] 使用NVM快速搭建NODE开发环境
export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node 本文主要介绍最近自己碰到的几个坑以及搜索到的相应解决方案: 如何快速搭 ...
- shell跑一个PHP脚本的简单命令
最近在做一个刷数据库的小功能,需要批量添加到不同的表中,写好PHP文件之后,登录到某一个服务器上面 上传文件的命令:rz 会出现一个弹框可以选择要上传的文件 执行文件并报错误的命令:/usr/loca ...
- java_Collection 类集
大体概念
- Bash常用快捷键
快捷键 作用 Ctrl+A 把光标移动到命令行开头,如果我们输入的命令过长,想要把光标移动到命令行开头时使用 Ctrl+E 把光标移动到命令行结尾 Ctrl+C 强制终止当前的命令 Ctrl+L 清屏 ...
- JQ 让光标在文本框最末尾
function setFocus() { //文本末尾获得焦点 var obj = event.srcElement; var txt = obj.createTextRange(); txt.mo ...
- ActionScript:Resampling PCM data
使用基于flash的麦克风录音,如果想在获取完PCM采样数据后,通过Sound马上回放,必须经过resampling.(注意:如果录音是采用的44KHz的话,则不需要) 因此,需要as实现一个简便的函 ...
- android SDK 代理配置(东北大学)
启动 Android SDK Manager ,打开主界面,依次选择「Tools」.「Options...」,弹出『Android SDK Manager - Settings』窗口: 在『Andro ...
- ORACLE 中ROWNUM用法总结!(转)
对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<.<=.!=),并非说用>,>=,=,be ...
- SGU 249.Matrix(Gray码)
题意: 用0到2^(n+m-1)这2^(n+m-1)个数填在一个2^n*2^m的矩阵里,使得所有相邻的数的二进制表示只有一位不同. Solution: Gray码.对于第i行第j列的数,由i的Gray ...