网上搜到的都是kt版,源码方法还是挂起函数,java调起来好麻烦,最后在官网api最下面的Extension functions里找到rxjava的方法
附上地址:WindowInfoTracker | Android Developers (google.cn)
依赖
implementation 'androidx.window:window-rxjava3:1.3.0'
然后是示例代码
WindowInfoTracker windowInfoTracker = WindowInfoTracker.getOrCreate(context);
//这里也可以使用windowLayoutInfoObservable获得Observable进行处理
WindowInfoTrackerRx.windowLayoutInfoFlowable(windowInfoTracker, context)
.safeSubscribe(new BlockingBaseSubscriber<WindowLayoutInfo>() {
@Override
public void onNext(WindowLayoutInfo windowLayoutInfo) {
List<DisplayFeature> list = windowLayoutInfo.getDisplayFeatures();
if (list.isEmpty()){
Log.d("DisplayFeature", "normal screen");//非折叠屏和折叠屏close状态
}else {
Log.d("DisplayFeature", "fold spread screen");//折叠屏展开状态
}
}
@Override
public void onError(Throwable t) {
}
});