4

在开发 Android Wear 表盘时,如何检测屏幕是否是圆形的并且有下巴(又名爆胎带),例如 Moto 360?我试过onSurfaceChanged了,但那里的宽度和高度是相同的。

我在有下巴的模拟器上试过这个,但仍然无法检测到下巴,是模拟器问题还是我的代码有问题?:

@Override
void onApplyWindowInsets(WindowInsets insets) {
    super.onApplyWindowInsets(insets);
    // check if MOTO360 or other Chin layouts
    Log.d(TAG,String.format("isRound : %s, BottomInset :%d",insets.isRound()?"YES":"NO",insets.getStableInsetBottom()));
    // LOG OUTPUT : isRound : YES, BottomInset :0
    if (insets.isRound() && insets.getStableInsetBottom() > 0)
        ClockPaintingRoutines.flat_display_mode=true;
 }
4

2 回答 2

9

我在用:

insets.getSystemWindowInsetBottom() > 0

这在模拟器上对我有用,但我没有真正的设备来测试它。

于 2016-01-30T14:06:57.493 回答
2
//Kotlin

// height
val height = resources.displayMetrics.heightPixels
// width
val width = resources.displayMetrics.widthPixels

// is round?
val screenForm = resources.configuration.isScreenRound

// if true
val form = if (screenForm) {
   if (height != width)
      "Round chin"
   else
      "Round"
} else {
   "Square"
}
于 2020-10-02T20:31:52.403 回答