为 Wear 创建自定义布局

借助 Wear OS by Google 谷歌,为手表创建布局与为手机创建布局很相似,区别在于设计时必须考虑到手表屏幕的尺寸,确保屏幕内容一览无余。请不要将手机应用的功能和界面移植到手表中,不要指望这样能带来良好的体验。

仅当确有必要时,才应创建自定义布局。如需了解如何设计出色的手表应用,请阅读为 Wear OS 设计应用指南。

创建自定义通知

一般而言,您应在手机上创建通知,让它们自动同步到穿戴式设备。这样,您只需构建一次通知,即可让通知出现在多种类型的设备上(不只是手表,甚至还包括汽车和电视),而不必针对不同的设备类型分别设计通知。

如果标准通知样式(如 NotificationCompat.BigTextStyleNotificationCompat.InboxStyle)不能满足您的需求,您可以使用自定义布局显示 Activity。您只能在手表上创建和发出自定义通知,系统不会将这些通知同步到手机。

注意:在手表上创建自定义通知时,您可以用标准通知 API(API 级别 20)代替支持库。

如需创建自定义通知,请执行以下操作:

  1. 创建布局并将其设为您要显示的 Activity 的内容视图。

    Kotlin

        override fun onCreate(savedInstanceState: Bundle?) {
            ...
            setContentView(R.layout.notification_activity)
        }
        

    Java

        public void onCreate(Bundle bundle){
            ...
            setContentView(R.layout.notification_activity);
        }
        
  2. 在 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" />
        
  3. 为您要显示的 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);
        
  4. 构建一个 Notification 并调用提供 PendingIntentsetDisplayIntent()。在用户查看您的通知时,系统将使用此 PendingIntent 启动该 Activity。
  5. 使用 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 开发,使用它可以轻松地设置项目、导入库和打包应用。