检测 Moto 360 屏幕形状的常用方法似乎无法正常工作。
我知道有报道说windowInset.isRound()
在 Moto 360 中返回 false。
目前我的代码如下
WatchViewStub viewStub = new WatchViewStub(this);
viewStub.setRoundLayout(com.pizzaentertainment.weatherwatchface.R.layout.bau);
viewStub.setRectLayout(com.pizzaentertainment.weatherwatchface.R.layout.bau_rect);
viewStub.setOnApplyWindowInsetsListener( new View.OnApplyWindowInsetsListener() {
@Override
public WindowInsets onApplyWindowInsets(View view, WindowInsets windowInsets) {
Log.d("ISWHAT?", "ASD" +windowInsets.isRound());
return windowInsets;
}
});
addContentView(viewStub, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
viewStub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
@Override
public void onLayoutInflated(WatchViewStub watchViewStub) {
Log.d("INFLATED", "INFLATED");
}
});
我的主要问题是onApplyWindowInsets
在我的 LG G 手表和三星 Galaxy Gear Live 上都不会被调用。我对一个 360 用户进行了测试,根据测试,该方法也不会在他的设备上被调用。
- 为什么
OnApplyWindowInsetListener
不被调用? - 为什么收到回调工作报告的人
windowInset.isRound()
在 Moto 360 上返回 false? - 我们应该如何识别 Moto 360(以及未来的圆形)?从
Build.MODEL
?