· 堆叠多张卡片:通知栏卡片的堆叠
· 语音回复:
Wear 上的UI开发
Android Wear apps用户界面不同于在手机设备上构建。需要遵循AndroidWear设计规范和UI模式,以确保应用通过针对可穿戴设备而优化的一致用户体验。
UI模式主要通过以下方式实现:
-
卡片
-
倒计时和确认
-
长按消失
-
2d pickers
-
选择列表
Wearable UI Library是Android SDk中Google Repository的一部分,提供帮助你实现这些模式的类,并可以创建同时适配运行在圆形和方形屏幕设备上的布局。
定义布局
当创建android wear布局的时候,要考虑设备有两种屏幕,方形和圆形。任何位于屏幕角落的内容都会被圆形屏幕裁剪掉。
Wearable UI Library提供两种方式解决这个问题:
1、为圆形和方形屏幕的设备定义两套布局。在运行时检测设备屏幕并渲染不同的布局。
2、使用Wearable UILibrary中一种特殊的布局来包住你的布局。这个布局会根据设备屏幕来加载不同的布局文件。
典型的办法是第一种,如果布局简单可以直接使用第二种。
为圆形和方形屏幕定义不同的布局
Wearable UI Library中的WatchViewStub这个类可以让你为圆形和方形屏幕定义不同的布局。这个类会在运行时检测屏幕形状并渲染相应的布局。
1、在你的activity布局文件中添加WatchViewStub元素
2、使用rectLayout属性为方形屏幕指定布局文件
3、使用roundLayout属性为圆形屏幕指定布局文件
[java]
-
<android.support.wearable.view.WatchViewStub
-
xmlns:android=”http://schemas.android.com/apk/res/android”
-
xmlns:app=”http://schemas.android.com/apk/res-auto”
-
xmlns:tools=”http://schemas.android.com/tools”
-
android:id=”@+id/watch_view_stub”
-
android:layout_width=”match_parent”
-
android:layout_height=”match_parent”
-
app:rectLayout=”@layout/rect_activity_wear”
-
app:roundLayout=”@layout/round_activity_wear”>
-
</android.support.wearable.view.WatchViewStub>
-
@Override
-
protected void onCreate(Bundle savedInstanceState) {
-
super.onCreate(savedInstanceState);
-
setContentView(R.layout.activity_wear);
-
}
-
访问布局控件
-
渲染布局文件不是同步的,所以要设置一个回调来监听WatchViewStub渲染完成。
-
@Override
-
protected void onCreate(Bundle savedInstanceState) {
-
super.onCreate(savedInstanceState);
-
setContentView(R.layout.activity_wear);
-
WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
-
stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
-
@Override public void onLayoutInflated(WatchViewStub stub) {
-
// Now you can access your views
-
TextView tv = (TextView) stub.findViewById(R.id.text);
-
…
-
}
-
});
-
}
<android.support.wearable.view.WatchViewStub
xmlns:android=“http://schemas.android.com/apk/res/android”
xmlns:app=“http://schemas.android.com/apk/res-auto”
xmlns:tools=“http://schemas.android.com/tools”
android:id=“@+id/watch_view_stub”
android:layout_width=“match_parent”
android:layout_height=“match_parent”
app:rectLayout=“@layout/rect_activity_wear”
app:roundLayout=“@layout/round_activity_wear”>
</android.support.wearable.view.WatchViewStub>
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_