示例#1
0
            public Init(
                DynamicVerticalLayout backing,
                IEnumerable <IElementData> layoutData,
                bool renderLatestItemsFirst = false
                )
            {
                this.backing                = backing;
                this.layoutData             = layoutData.ToList();
                this.renderLatestItemsFirst = renderLatestItemsFirst;

                var mask = backing._maskRect;

                // We need oncePerFrame() because Unity doesn't allow doing operations like gameObject.SetActive()
                // from OnRectTransformDimensionsChange()
                // oncePerFrame() performs operation in LateUpdate
                var maskSize =
                    mask.gameObject.EnsureComponent <OnRectTransformDimensionsChangeForwarder>().rectDimensionsChanged
                    .oncePerFrame()
                    .filter(_ => mask) // mask can go away before late update, so double check it.
                    .map(_ => mask.rect)
                    .toRxVal(mask.rect);

                maskSize.zip(containerHeight, (_, height) => height).subscribe(dt, height => {
                    backing._container.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, height);
                    clearLayout();
                    updateLayout();
                });

                dt.track(backing._scrollRect.onValueChanged.subscribe(_ => updateLayout()));
            }
示例#2
0
 public StandardBanner(AndroidJavaObject java)
 {
     this.java = java;
     dt.track(ASync.onAppPause.subscribe(paused => {
         if (paused)
         {
             onPause();
         }
         else
         {
             onResume();
         }
     }));
     dt.track(ASync.onAppQuit.subscribe(_ => {
         destroy();
     }));
 }
 public void track(
     IDisposable a,
     [CallerMemberName] string callerMemberName = "",
     [CallerFilePath] string callerFilePath     = "",
     [CallerLineNumber] int callerLineNumber    = 0
     ) => tracker.track(
     a,
     // ReSharper disable ExplicitCallerInfoArgument
     callerMemberName: callerMemberName, callerFilePath: callerFilePath, callerLineNumber: callerLineNumber
     // ReSharper restore ExplicitCallerInfoArgument
     );