借助 Wear OS by Google 谷歌,为手表创建布局与为手机创建布局很相似,区别在于设计时必须考虑到手表屏幕的尺寸,确保屏幕内容一览无余。请不要将手机应用的功能和界面移植到手表中,不要指望这样能带来良好的体验。
仅当确有必要时,才应创建自定义布局。如需了解如何设计出色的手表应用,请阅读为 Wear OS 设计应用指南。
创建自定义通知
一般而言,您应在手机上创建通知,让它们自动同步到穿戴式设备。这样,您只需构建一次通知,即可让通知出现在多种类型的设备上(不只是手表,甚至还包括汽车和电视),而不必针对不同的设备类型分别设计通知。
如果标准通知样式(如 NotificationCompat.BigTextStyle
或 NotificationCompat.InboxStyle
)不能满足您的需求,您可以使用自定义布局显示 Activity。您只能在手表上创建和发出自定义通知,系统不会将这些通知同步到手机。
注意:在手表上创建自定义通知时,您可以用标准通知 API(API 级别 20)代替支持库。
如需创建自定义通知,请执行以下操作:
-
创建布局并将其设为您要显示的 Activity 的内容视图。
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { ... setContentView(R.layout.notification_activity) }
Java
public void onCreate(Bundle bundle){ ... setContentView(R.layout.notification_activity); }
-
在 Android 清单中定义该 Activity 的必要属性,以便在手表的上下文信息流进程中显示该 Activity。您需要将该 Activity 声明为可导出、可嵌入,并且具有一个空的 TaskAffinity。我们还建议将主题背景设为
Theme.DeviceDefault.Light
。例如:<activity android:name="com.example.MyDisplayActivity" android:exported="true" android:allowEmbedded="true" android:taskAffinity="" android:theme="@android:style/Theme.DeviceDefault.Light" />
-
为您要显示的 Activity 创建
PendingIntent
。例如:Kotlin
val notificationPendingIntent: PendingIntent = Intent(this, NotificationActivity::class.java).let { notificationIntent -> PendingIntent.getActivity( this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT ) }
Java
Intent notificationIntent = new Intent(this, NotificationActivity.class); PendingIntent notificationPendingIntent = PendingIntent.getActivity( this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
-
构建一个
Notification
并调用提供PendingIntent
的setDisplayIntent()
。在用户查看您的通知时,系统将使用此PendingIntent
启动该 Activity。 -
使用
notify()
方法发出通知。注意:在 Wear 1.x 中,当通知出现在主屏幕上时,系统会用根据通知语义数据生成的标准模板显示该通知。此模板适用于所有表盘。当用户向上滑动通知时,他们会看到该通知的自定义 Activity。
使用 Wear 界面库创建布局
当您使用 Android Studio 项目向导创建手表应用时,会自动包含 Wear 界面库。您也可以通过以下依赖项声明将此库添加到您的 build.gradle
文件中:
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'androidx.wear:wear:1.0.0' compile 'com.google.android.gms:play-services-wearable:+' }
此库可以帮助您构建针对手表设计的界面。如需了解详情,请参阅为 Wear 设备创建自定义界面。
下面是一些主要类:
-
BoxInsetLayout
- 一个
FrameLayout
对象,可识别屏幕形状并将其子对象包含在圆形屏幕的中央方形区域中。 -
ConfirmationActivity
- 一个 Activity,可在用户完成某项操作后显示确认动画。
-
AnimationSet
- 一组应一起播放的动画。
-
CircularProgressLayout
- 一种布局,可提供围绕子视图的圆形倒计时器。常用作在经过短暂延时后确认某项操作的自动计时器。
-
SnapHelper
SnapHelper
支持贴靠RecyclerView
对象。-
PagerSnapHelper
SnapHelper
实例的实现,支持以垂直或水平方向贴靠的分页器样式。-
AlertDialog
- Dialog 的一个子类,可显示一个、两个或三个按钮。
-
ProgressBar
- 向用户显示一个表示操作进度的进度条;在操作进行过程中,应用可以更改进度量(修改进度条的长度)。
-
WearableRecyclerView
RecyclerView
类的穿戴式设备版专用实现,用于在方形和圆形设备上显示滚动项目列表。
Wear 界面库 API 参考文档
参考文档详细介绍了如何使用每个界面微件。请浏览 Wear API 参考文档,了解上述类。
注意:我们建议您使用 Android Studio 进行 Wear OS 开发,使用它可以轻松地设置项目、导入库和打包应用。