在 Android Wear 中正确显示通知
Posted
技术标签:
【中文标题】在 Android Wear 中正确显示通知【英文标题】:Display notifications correctly in Android Wear 【发布时间】:2017-03-02 19:46:54 【问题描述】:与 android Wear 方形设备配对时,我的通知会正确显示 - 它们只是发送到设备(手表)以自动显示以保持代码简单。但是,它们位于 Wear 圆形手表的默认屏幕中心,并且圆形屏幕通知的一角实际上缺少一些通知信息。
BigTextStyle myStyle = new Notification.BigTextStyle();
.bigText(myText);
Notification.Builder notificationBuilder =
new Notification.Builder(this)
.setStyle(myStyle)
// and so on
但是,可能是在某处添加以下几行代码(及其类导入):
Notification.WearableExtender myextend = new Notification.WearableExtender();
.WearableExtender()
.setGravity(Gravity.TOP);
// add other code
.extend(myextend)
【问题讨论】:
【参考方案1】:基于此documentation,由于某些 Android Wear 设备具有方形屏幕,而其他设备具有圆形屏幕,因此您的表盘应适应并利用屏幕的特定形状,如 design guidelines 中所述。
Android Wear 可让您的表盘在运行时确定屏幕形状。要检测屏幕是方形还是圆形,重写CanvasWatchFaceService.Engine
类中的onApplyWindowInsets()
方法,如下所示:
private class Engine extends CanvasWatchFaceService.Engine
boolean mIsRound;
int mChinSize;
@Override
public void onApplyWindowInsets(WindowInsets insets)
super.onApplyWindowInsets(insets);
mIsRound = insets.isRound();
mChinSize = insets.getSystemWindowInsetBottom();
...
具有圆形屏幕的设备可以在屏幕底部包含一个嵌入(或“下巴”)。要在绘制表盘时调整您的设计,请检查 mIsRound
和 mChinSize
成员变量的值。
以下是一些可能有帮助的相关主题:
Is there any way to detect if the clock is round? How to set the Watchface in the center of watch【讨论】:
以上是关于在 Android Wear 中正确显示通知的主要内容,如果未能解决你的问题,请参考以下文章