创建自己的自定义布局(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, 0, notificationIntent,PendingIntent.FLAG_UPDATE_CURRENT);

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

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

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

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

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

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

当你创建可穿戴应用时。有一个非官方的UI库会通过Android Studioproject向导被自己主动包括进来。 
你能够在项目构建文件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參考文档。里面有每一个界面组件的完整使用说明。

你也能够直接訪问该文档在踏得网上的一个国内镜像:

by iefreer

Android:创建耐磨应用 - 定义自己的布局的更多相关文章

  1. Android四大组件之Activity(活动)及其布局的创建与加载布局

    Android四大组件之Activity(活动)及其布局的创建与加载布局 什么是Activity ? 活动(Activity)是包含用户界面的组件,主要用于和用户进行交互的,一个应用程序中可以包含零个 ...

  2. Android GradientDrawable(shape标签定义) 静态使用和动态使用(圆角,渐变实现)

    Android GradientDrawable使用优势: 1. 快速实现一些基本图形(线,矩形,圆,椭圆,圆环) 2. 快速实现一些圆角,渐变,阴影等效果 3. 代替图片设置为View的背景 4. ...

  3. 【Android UI】Android开发之View的几种布局方式及实践

    引言 通过前面两篇: Android 开发之旅:又见Hello World! Android 开发之旅:深入分析布局文件&又是“Hello World!” 我们对Android应用程序运行原理 ...

  4. Android 开发:view的几种布局方式及实践

    View的几种布局显示方法,以后就不会在针对布局方面做过多的介绍.View的布局显示方式有下面几种:线性布局(Linear Layout).相对布局(Relative Layout).表格布局(Tab ...

  5. Android开发:View的几种布局及实践

    引言 View的布局显示方式有下面几种:线性布局(Linear Layout).相对布局(Relative Layout).表格布局(Table Layout).网格视图(Grid View).标签布 ...

  6. 【Android 应用开发】AndroidUI设计之 布局管理器 - 详细解析布局实现

    写完博客的总结 : 以前没有弄清楚的概念清晰化 父容器与本容器属性 : android_layout...属性是本容器的属性, 定义在这个布局管理器的LayoutParams内部类中, 每个布局管理器 ...

  7. Android:创建文件或文件夹以及获取sd卡根目录

    目录结构: 功能,可以根据录入的目录或者文件夹生成相应的文件或者文件夹 首先需要添加一个权限: <uses-permission android:name="android.permi ...

  8. Android中View绘制优化之一---- 优化布局层次

    本文原创, 转载请注明出处:http://blog.csdn.net/qinjuning 前言,竟然是翻译,当然得弄的有板有眼. 照着大作家格式来咯 , - - . 译序 最近一直在做锁屏界面,之前也 ...

  9. Android学习笔记(三) UI布局

    每一个布局都有其适合的方式,另外,这几个布局元素可以相互嵌套应用,做出美观的界面. 一.线性布局(LinearLayout) 线性布局,这个东西,从外框上可以理解为一个div,他首先是一个一个从上往下 ...

随机推荐

  1. fragment android

    在Eoe中看到了 一个关于的 详细讲解,相信对 学Fragment 有帮助 android fragment基础与源码案例: Fragment动画效果 http://www.eoeandroid.co ...

  2. HDU ACM 2845 Beans-&gt;动态规划

    意甲冠军: 1. 对于每一行是,对不相邻的同一时间数取: 2.它是相同的列,相邻行不能同时服用: 3.因此,我们可以得到状态方程:dp[i]=dp[i-1]>(dp[i-2]+a[i])?dp[ ...

  3. vs修错小知识,相当于我自己的笔记,需要的人可以看下

    在出现这种外部错误时,首先得检查你自己的的类的方法是否都以及实现了,我就是出现没有实现某些方法所以报出这个错误!!! 结果是onExit()方法我定义了没有去实现它. (待续)

  4. hdu 4557 非诚勿扰 vector的应用 原来vector 可以删除指定位置元素 不过消耗大

    非诚勿扰 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submi ...

  5. Android适应方案汇总(三)

    在Android适应方案汇总(一个).(两)在.我们理解一些基本概念. 那么详细的开发,我们应该重视起来. 首先,我们需要知道.关键的事实是,这两个适配器: (1).这点在单位的使用上用dp.sp以及 ...

  6. PLSQL Developer 9.如何设置查询返回所有纪录(转)

    默认PLSQL Developer查询出来的记录只能是满屏那么多行,一般也就是二三十行,比较不方便. 根据以下设置,可以将其结果都返回. 方法:Tools>Preferences>Wind ...

  7. 微信公众平台入门--PHP,实现自身的主动回复文本,图像,点击事件

    微通道基本应答代码,然后单击事件函数,部署了sae要么bae,基本自由妥妥server 号了 <?php define("TOKEN", "mzh"); ...

  8. 问题:DataGrid该行并不总是很清楚验证错误(删除), 解决方案,如下面

    转载,收藏转载请注明出处http://blog.csdn.net/metal1/article/details/37568391 景象:于DataGrid进数据有误,行验证返回new Validati ...

  9. [LeetCode290]Word Pattern

    题目: Given a pattern and a string str, find if str follows the same pattern. Here follow means a full ...

  10. 左右10g DG中间ORA-19527和ORA-00312错误解决演示示例

    这些天大厦10g DG Windows 2008 R2测试环境,主要明天去给客户端,再建一个生产资源库DG,其中一些发现的问题.特此记录下来 因为将要部署到生产环境.所以考虑在线搭建DG的方案,即不停 ...