【发布时间】:2014-09-13 08:58:37
【问题描述】:
检测 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?
【问题讨论】: