为可穿戴设备创建布局是和手持设备是一样的,除了我们需要为屏幕的尺寸和glanceability进行设计。但是不要期望通过搬迁手持应用的功能与UI到可穿戴上会有一个好的用户体验。仅仅在有需要的时候,我们才应该创建自定义的布局。请参考可穿戴设备的design guidelines学习如何设计一个优秀的可穿戴应用。

创建自定义Notification

通常来说,我们应该在手持应用上创建好notification,然后让它自动同步到可穿戴设备上。这让我们只需要创建一次notification,然后可以在不同类型的设备(不仅仅是可穿戴设备,也包含车载设备与电视)上进行显示,免去为不同设备进行重新设计。

如果标准的notification风格无法满足我们的需求(例如NotificationCompat.BigTextStyle 或者 NotificationCompat.InboxStyle),我们可以显示一个使用自定义布局的activity。我们只可以在可穿戴设备上创建并处理自定义的notification,同时系统不会将这些notification同步到手持设备上。

Note: 当在可穿戴设备上创建自定义的notification时,我们可以使用标准notification API(API Level 20),不需要使用Support Library。

为了创建自定义的notification,步骤如下:创建布局并设置这个布局为需要显示的activity的content view:public void onCreate(Bundle bundle){

...

setContentView(R.layout.notification_activity);

}

为了使得activity能够显示在可穿戴设备上,需要在manifest文件中为activity定义必须的属性。我们需要把activity声明为exportable,embeddable以及拥有一个空的task affinity。我们也推荐把activity的主题设置为Theme.DeviceDefault.Light。例如:

android:exported="true"

android:allowEmbedded="true"

android:taskAffinity=""

android:theme="@android:style/Theme.DeviceDefault.Light" />

为activity创建PendingIntent,例如::Intent notificationIntent = new Intent(this, NotificationActivity.class);

PendingIntent notificationPendingIntent = PendingIntent.getActivity(this, 0, notificationIntent,

PendingIntent.FLAG_UPDATE_CURRENT);

创建Notification并执行setDisplayIntent())方法,参数是前面创建的PendingIntent。当用户查看这个notification时,系统使用这个PendingIntent来启动activity。

使用notify())方法触发notification。Note: 当notification呈现在主页时,系统会根据notification的语义,使用一个标准的模板来呈现它。这个模板可以在所有的表盘上进行显示。当用户往上滑动notification时,将会看到为这个notification准备的自定义的activity。

使用Wearable UI库创建布局

当我们使用Android Studio的工程向导创建一个Wearable应用的时候,会自动包含Wearable UI库。你也可以通过给build.gradle文件添加下面的依赖声明把库文件添加到项目:dependencies {

compile fileTree(dir: 'libs', include: ['*.jar'])

compile 'com.google.android.support:wearable:+'

compile 'com.google.android.gms:play-services-wearable:+'

}

这个库文件帮助我们建立为可穿戴设备设计的UI。更详细的介绍请看为可穿戴设备创建自定义UI。

下面是一些Wearable UI库中主要的类:BoxInsetLayout - 一个能够感知屏幕的形状并把子控件居中摆放在一个圆形屏幕的FrameLayout。

CardFragment - 一个能够可拉伸,垂直可滑动卡片的fragment。

CircledImageView - 一个圆形的image view。

ConfirmationActivity - 一个在用户完成一个操作之后用来显示确认动画的activity。

CrossFadeDrawable - 一个drawable。该drawable包含两个子drawable和提供方法来调整这两个子drawable的融合方式。

DelayedConfirmationView - 一个view。提供一个圆形倒计时器,这个计时器通常用于在一段短暂的延迟结束后自动确认某个操作。

DismissOverlayView - 一个用来实现长按消失的View。

DotsPageIndicator - 一个为GridViewPager提供的指示标记,用于指定当前页面相对于所有页面的位置。

GridViewPager - 一个可以横向与纵向滑动的局部控制器。你需要提供一个GridPagerAdapter用来生成显示页面的数据。

GridPagerAdapter - 一个提供给GridViewPager显示页面的adapter。

FragmentGridPagerAdapter - 一个将每个页面表示为一个fragment的GridPagerAdapter实现。

WatchViewStub - 一个可以根据屏幕的形状生成特定布局的类。

WearableListView - 一个针对可穿戴设备优化过后的ListView。它会垂直的显示列表内容,并在用户停止滑动时自动显示最靠近的Item。

Wear UI library API reference

这个参考文献解释了如何详细地使用每个UI组件。查看Wear API reference documentation了解上述类的用法。

为用于Eclipse ADT下载Wearable UI库

如果你正在使用Eclipse ADT,那么下载Wearable UI library将Wearable UI库导入到你的工程当中。Note: 我们推荐使用Android Studio来开发可穿戴应用。

Android怎么自定义布局,Android 创建自定义的布局相关推荐

  1. Android 开发 -- 开发第一个安卓程序、Android UI开发(布局的创建:相对布局和线性布局、控件单位:px pt dp sp、常用控件 、常见对话框、ListView)

    文章目录 1. 开发第一个Hello World程序 1.1 开发程序 1.2 认识程序中的文件 1.3 Android程序结构 1.4 安卓程序打包 2. Android UI开发 2.1 布局的创 ...

  2. 【Flutter】自定义 Flutter 组件 ( 创建自定义 StatelessWidget、StatefulWidget 组件 | 调用自定义组件 )

    文章目录 一.Flutter 组件简介 二.Flutter 自定义 StatelessWidget 组件流程 1.导入父类包 2.选择继承的父类 3.设置成员变量及构造函数 4.重写 build 方法 ...

  3. linux新建自定义命令,Linux 创建自定义命令

    Linux 创建自定义命令 Linux 可以创建自定义使用命令 这里我们采取使用"alias"命令.这里我们首先了解两个文件,通过这两个文件我们可以根据环境配置相应的自定义命令. ...

  4. 纷享销客CRM自定义函数:创建自定义对象数据

    // 构造主对象 Map data = ["name": "第一条测试数据","field_3f5kI__c": "12143&q ...

  5. 绝地求生自定义服务器购买,绝地求生怎么创建自定义房间_创建自定义房间方法教程...

    本文给大家带来绝地求生创建自定义房间的方法教程,绝地求生开放了自定义系统,玩家可以自主创建房间了.有些玩家不知道怎么创建,一起来了解一下吧,希望能帮到大家. 绝地求生创建自定义房间教程: - 进入自定 ...

  6. 绝地求生刺激战场自定义服务器,绝地求生刺激战场自定义房间怎么创建 自定义房间创建方法...

    腾讯光子&PUBG联合出品,正版<绝地求生>手游!百人空投,荒岛求生!虚幻4引擎研发,次世代完美画质,重现端游视听感受:8000Mx8000M正版... 类型:飞行射击 大小:11 ...

  7. 自定义服务器主播,绝地求生大逃杀自定义模式怎么创建 自定义服务器教程

    绝地求生是一款目前PC端非常火爆的大逃杀类游戏,这款吃鸡游戏火爆程度现已经蔓延到了世界各地,现在如果你不玩吃鸡游戏,都不好意思说自己玩过游戏.那么在今天这篇文章中,小编就给大家重点讲的是,这款游戏目前 ...

  8. android 自定义banner,Android项目 引入Banner开源库(轮播图)

    Banner开源库是什么? Banner 是 Android广告图片轮播控件,内部基于ViewPager2实现,Indicator和UI都可以自定义. 怎么使用 Banner 开源库? 1.在项目\a ...

  9. android获取其他app布局,android - 如何从App的(布局)XML变量中获取Manifest版本号?...

    android - 如何从App的(布局)XML变量中获取Manifest版本号? 我想有一种方法在代码的主要部分引用项目的清单版本号. 到目前为止我一直在做的是将String XML文件中的版本号链 ...

  10. html5创建自定义标签,在html中创建自定义标签

    创建并使用自定义标签 Web Components 标准非常重要的一个特性是,它使开发者能够将HTML页面的功能封装为 custom elements(自定义标签),本篇介绍使用 CustomElem ...

最新文章

  1. 010-012列表:一个打了激素的数组
  2. Java中的策略模式实例教程
  3. 操作系统 第一章【操作系统引论】【MOOC答案】
  4. 移动端下网页border:1px显示
  5. mysql varchar(20)_MySQL中采用类型varchar(20)和varchar(255)对性能上的影响
  6. 关于设计模式的感悟2
  7. php怎么在html上得到input值,怎么把一個php頁面的值傳到另一個html表單中的input里面去...
  8. Block Formatting Contexts(块级格式化上下文)
  9. php--------使用js生成二维码
  10. DBA和开发同事的一些代沟(一)
  11. java缩小pdf,如何使用Java缩小PDF文档中的内容?
  12. java 注入为空_Spring @Autowired 注入为 null
  13. 【码学堂】教师如何在码学堂上组织教学活动?
  14. Python每日一记129列表换行
  15. Android打地鼠小游戏案例
  16. Android自定义输入法软键盘
  17. php寻仙记,wap寻仙记
  18. 我们都忽略了Html5的力量,如果只看成一种技术就大错特错了!
  19. Cannot download sources Sources not found for
  20. 淘宝接口API开发 taobao代购系统API接口调用

热门文章

  1. execute、executeUpdate、executeQuery三者的区别及返回值
  2. 黑马程序员Java全套课程及笔记分享
  3. 淘宝API商品详情测试工具,返回数据说明
  4. Refreshing FeignContext-service-xxx
  5. 总资产=净资产+负债,负债当然是资产
  6. caffe部署模型,在无caffe环境的机器上运行
  7. 大利好!低学历计算机视觉工程师要起飞了,这波惊喜来的太突然!
  8. diskgenius 合并分区
  9. 烟花算法实现求解函数极值问题(一维)
  10. 2021年危险化学品生产单位安全生产管理人员模拟考试及危险化学品生产单位安全生产管理人员模拟考试题库