@quicktvui/ai 1.0.7 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/rules/.clinerules +28 -4
- package/rules/.cursorrules +28 -4
- package/rules/.github/copilot-instructions.md +28 -4
- package/rules/.source/hippy/extend_views/CoverFlowHorizontalView.java +203 -0
- package/rules/.source/hippy/extend_views/CoverFlowVerticalView.java +203 -0
- package/rules/.source/hippy/extend_views/CoverFlowViewController.java +195 -0
- package/rules/.source/hippy/extend_views/EngineRootView.java +125 -0
- package/rules/.source/hippy/extend_views/ExtendTag.java +83 -0
- package/rules/.source/hippy/extend_views/FocusSearchHelper.java +124 -0
- package/rules/.source/hippy/extend_views/IRecyclerItemView.java +12 -0
- package/rules/.source/hippy/extend_views/JSEventHandleView.java +5 -0
- package/rules/.source/hippy/extend_views/MarqueeRelayManager.java +133 -0
- package/rules/.source/hippy/extend_views/MarqueeRelayTextView.java +211 -0
- package/rules/.source/hippy/extend_views/ProgressBarView.java +83 -0
- package/rules/.source/hippy/extend_views/ProgressBarViewController.java +145 -0
- package/rules/.source/hippy/extend_views/SeekBarView.java +104 -0
- package/rules/.source/hippy/extend_views/SeekBarViewController.java +218 -0
- package/rules/.source/hippy/extend_views/StateImageView.java +149 -0
- package/rules/.source/hippy/extend_views/StateImageViewController.java +34 -0
- package/rules/.source/hippy/extend_views/TVButtonView.java +314 -0
- package/rules/.source/hippy/extend_views/TVButtonViewController.java +89 -0
- package/rules/.source/hippy/extend_views/TVTextView.java +684 -0
- package/rules/.source/hippy/extend_views/TVViewActor.java +811 -0
- package/rules/.source/hippy/extend_views/TVViewActorHost.java +6 -0
- package/rules/.source/hippy/extend_views/TVViewActor/346/216/245/345/205/245.md +66 -0
- package/rules/.source/hippy/extend_views/TemplateUtil.java +336 -0
- package/rules/.source/hippy/extend_views/TextButtonNode.java +47 -0
- package/rules/.source/hippy/extend_views/TextViewController.java +377 -0
- package/rules/.source/hippy/extend_views/fastlist/CenterFlyInAnimator.java +96 -0
- package/rules/.source/hippy/extend_views/fastlist/ChildOnScreenScroller.java +548 -0
- package/rules/.source/hippy/extend_views/fastlist/ClonedViewTag.java +17 -0
- package/rules/.source/hippy/extend_views/fastlist/EventDeliverer.java +55 -0
- package/rules/.source/hippy/extend_views/fastlist/FastAdapter.java +4683 -0
- package/rules/.source/hippy/extend_views/fastlist/FastAdapterUtil.java +982 -0
- package/rules/.source/hippy/extend_views/fastlist/FastFlexNode.java +48 -0
- package/rules/.source/hippy/extend_views/fastlist/FastFlexView.java +873 -0
- package/rules/.source/hippy/extend_views/fastlist/FastFlexViewController.java +130 -0
- package/rules/.source/hippy/extend_views/fastlist/FastItemNode.java +67 -0
- package/rules/.source/hippy/extend_views/fastlist/FastItemView.java +306 -0
- package/rules/.source/hippy/extend_views/fastlist/FastItemViewController.java +106 -0
- package/rules/.source/hippy/extend_views/fastlist/FastListModule.java +95 -0
- package/rules/.source/hippy/extend_views/fastlist/FastListNode.java +90 -0
- package/rules/.source/hippy/extend_views/fastlist/FastListView.java +2466 -0
- package/rules/.source/hippy/extend_views/fastlist/FastListViewController.java +1038 -0
- package/rules/.source/hippy/extend_views/fastlist/FastListView/346/270/262/346/237/223/346/265/201/347/250/213/345/233/276.graffle +0 -0
- package/rules/.source/hippy/extend_views/fastlist/FastPendingView.java +47 -0
- package/rules/.source/hippy/extend_views/fastlist/ItemDecorations.java +71 -0
- package/rules/.source/hippy/extend_views/fastlist/ItemStoreNode.java +64 -0
- package/rules/.source/hippy/extend_views/fastlist/ItemStoreView.java +13 -0
- package/rules/.source/hippy/extend_views/fastlist/ItemStoreViewController.java +45 -0
- package/rules/.source/hippy/extend_views/fastlist/ListItemHolder.java +7 -0
- package/rules/.source/hippy/extend_views/fastlist/ListViewControlProp.java +41 -0
- package/rules/.source/hippy/extend_views/fastlist/MouseRecycleView.java +509 -0
- package/rules/.source/hippy/extend_views/fastlist/OnFastItemClickListener.java +12 -0
- package/rules/.source/hippy/extend_views/fastlist/OnFastItemFocusChangeListener.java +9 -0
- package/rules/.source/hippy/extend_views/fastlist/OnFastScrollStateChangedListener.java +7 -0
- package/rules/.source/hippy/extend_views/fastlist/PendingListNode.java +18 -0
- package/rules/.source/hippy/extend_views/fastlist/PendingViewController.java +13 -0
- package/rules/.source/hippy/extend_views/fastlist/PostHandlerView.java +6 -0
- package/rules/.source/hippy/extend_views/fastlist/PostTaskHolder.java +20 -0
- package/rules/.source/hippy/extend_views/fastlist/ReplaceChildController.java +105 -0
- package/rules/.source/hippy/extend_views/fastlist/ReplaceChildView.java +312 -0
- package/rules/.source/hippy/extend_views/fastlist/TVListView.java +3692 -0
- package/rules/.source/hippy/extend_views/fastlist/TemplateCodeParser.java +247 -0
- package/rules/.source/hippy/extend_views/fastlist/Utils.java +572 -0
- package/rules/.source/hippy/extend_views/fastlist/ViewTag.java +317 -0
- package/rules/.source/hippy/extend_views/fastlist/VirtualListView.java +8 -0
- package/rules/.source/hippy/extend_views/fastlist/diff/FastListDataBindingHelper.java +320 -0
- package/rules/.source/hippy/extend_views/fastlist/diff/KeyDiffHelper.java +289 -0
- package/rules/.source/hippy/extend_views/fastlist/diff/NoKeyDiffHelper.java +278 -0
- package/rules/.source/hippy/extend_views/tag/FontTag.java +53 -0
- package/rules/.source/hippy/extend_views/tag/HtmlTag.java +191 -0
- package/rules/.source/hippy/extend_views/tag/HtmlTagHandler.java +185 -0
- package/rules/.source/hippy/extend_views/tag/SpanTag.java +160 -0
- package/rules/.source/hippy/extend_views/tag/TextFontSpan.java +102 -0
- package/rules/.source/hippy/extend_views/waterfall/Chunk.java +10 -0
- package/rules/.source/hippy/extend_views/waterfall/ChunkGroup.java +5 -0
- package/rules/.source/hippy/extend_views/waterfall/Section.java +4 -0
- package/rules/.source/hippy/extend_views/waterfall/Tabs.java +5 -0
- package/rules/.source/hippy/extend_views/waterfall/WaterfallUtils.java +26 -0
- package/rules/.source/hippy/hippy_uimanager/ControllerHolder.java +30 -0
- package/rules/.source/hippy/hippy_uimanager/ControllerManager.java +651 -0
- package/rules/.source/hippy/hippy_uimanager/ControllerRegistry.java +102 -0
- package/rules/.source/hippy/hippy_uimanager/ControllerUpdateManger.java +252 -0
- package/rules/.source/hippy/hippy_uimanager/CustomControllerHelper.java +425 -0
- package/rules/.source/hippy/hippy_uimanager/DiffUtils.java +526 -0
- package/rules/.source/hippy/hippy_uimanager/ExtendViewGroup.java +36 -0
- package/rules/.source/hippy/hippy_uimanager/HippyCustomViewCreator.java +29 -0
- package/rules/.source/hippy/hippy_uimanager/HippyGroupController.java +83 -0
- package/rules/.source/hippy/hippy_uimanager/HippyViewBase.java +27 -0
- package/rules/.source/hippy/hippy_uimanager/HippyViewController.java +2189 -0
- package/rules/.source/hippy/hippy_uimanager/HippyViewEvent.java +52 -0
- package/rules/.source/hippy/hippy_uimanager/IHippyZIndexViewGroup.java +24 -0
- package/rules/.source/hippy/hippy_uimanager/InternalExtendViewUtil.java +395 -0
- package/rules/.source/hippy/hippy_uimanager/ListItemRenderNode.java +143 -0
- package/rules/.source/hippy/hippy_uimanager/ListViewRenderNode.java +44 -0
- package/rules/.source/hippy/hippy_uimanager/MatrixUtil.java +470 -0
- package/rules/.source/hippy/hippy_uimanager/NativeGestureDispatcher.java +349 -0
- package/rules/.source/hippy/hippy_uimanager/NativeGestureProcessor.java +188 -0
- package/rules/.source/hippy/hippy_uimanager/PullFooterRenderNode.java +43 -0
- package/rules/.source/hippy/hippy_uimanager/PullHeaderRenderNode.java +43 -0
- package/rules/.source/hippy/hippy_uimanager/RenderManager.java +304 -0
- package/rules/.source/hippy/hippy_uimanager/RenderNode.java +533 -0
- package/rules/.source/hippy/hippy_uimanager/StateView.java +17 -0
- package/rules/.source/hippy/hippy_uimanager/TransformUtil.java +125 -0
- package/rules/.source/hippy/hippy_uimanager/ViewGroupDrawingOrderHelper.java +108 -0
- package/rules/.source/hippy/hippy_uimanager/ViewStateProvider.java +10 -0
- package/rules/.source/hippy/hippy_views/audioview/AudioPlayManager.java +457 -0
- package/rules/.source/hippy/hippy_views/audioview/AudioView.java +225 -0
- package/rules/.source/hippy/hippy_views/audioview/AudioViewController.java +135 -0
- package/rules/.source/hippy/hippy_views/common/CommonBackgroundDrawable.java +58 -0
- package/rules/.source/hippy/hippy_views/common/CommonBorder.java +37 -0
- package/rules/.source/hippy/hippy_views/custom/HippyCustomPropsController.java +61 -0
- package/rules/.source/hippy/hippy_views/hippylist/HippyRecyclerListAdapter.java +399 -0
- package/rules/.source/hippy/hippy_views/hippylist/HippyRecyclerView.java +378 -0
- package/rules/.source/hippy/hippy_views/hippylist/HippyRecyclerViewController.java +187 -0
- package/rules/.source/hippy/hippy_views/hippylist/HippyRecyclerViewHolder.java +39 -0
- package/rules/.source/hippy/hippy_views/hippylist/HippyRecyclerViewWrapper.java +134 -0
- package/rules/.source/hippy/hippy_views/hippylist/NodePositionHelper.java +55 -0
- package/rules/.source/hippy/hippy_views/hippylist/PreloadHelper.java +54 -0
- package/rules/.source/hippy/hippy_views/hippylist/PullFooterEventHelper.java +61 -0
- package/rules/.source/hippy/hippy_views/hippylist/PullHeaderEventHelper.java +127 -0
- package/rules/.source/hippy/hippy_views/hippylist/RecyclerViewEventHelper.java +394 -0
- package/rules/.source/hippy/hippy_views/image/HippyContentDrawable.java +113 -0
- package/rules/.source/hippy/hippy_views/image/HippyImageView.java +1608 -0
- package/rules/.source/hippy/hippy_views/image/HippyImageViewController.java +382 -0
- package/rules/.source/hippy/hippy_views/image/IImageStateListener.java +7 -0
- package/rules/.source/hippy/hippy_views/list/ChildOnScreenScroller.java +255 -0
- package/rules/.source/hippy/hippy_views/list/HippyListAdapter.java +647 -0
- package/rules/.source/hippy/hippy_views/list/HippyListItemView.java +162 -0
- package/rules/.source/hippy/hippy_views/list/HippyListItemViewController.java +45 -0
- package/rules/.source/hippy/hippy_views/list/HippyListView.java +915 -0
- package/rules/.source/hippy/hippy_views/list/HippyListViewController.java +622 -0
- package/rules/.source/hippy/hippy_views/list/HippyRecycler.java +31 -0
- package/rules/.source/hippy/hippy_views/list/IRecycleItemTypeChange.java +23 -0
- package/rules/.source/hippy/hippy_views/list/ItemDecorations.java +70 -0
- package/rules/.source/hippy/hippy_views/list/NegativeLongKeyFlinger.java +156 -0
- package/rules/.source/hippy/hippy_views/list/NodeHolder.java +34 -0
- package/rules/.source/hippy/hippy_views/list/RecycleViewFlinger.java +126 -0
- package/rules/.source/hippy/hippy_views/list/TVRecyclerView.java +2070 -0
- package/rules/.source/hippy/hippy_views/list/TVSingleLineListView.java +15 -0
- package/rules/.source/hippy/hippy_views/modal/HippyModalHostManager.java +102 -0
- package/rules/.source/hippy/hippy_views/modal/HippyModalHostView.java +597 -0
- package/rules/.source/hippy/hippy_views/modal/ModalHostHelper.java +46 -0
- package/rules/.source/hippy/hippy_views/modal/ModalStyleNode.java +34 -0
- package/rules/.source/hippy/hippy_views/modal/RequestCloseEvent.java +32 -0
- package/rules/.source/hippy/hippy_views/modal/ShowEvent.java +31 -0
- package/rules/.source/hippy/hippy_views/navigator/Navigator.java +126 -0
- package/rules/.source/hippy/hippy_views/navigator/NavigatorController.java +120 -0
- package/rules/.source/hippy/hippy_views/refresh/HippyPullFooterView.java +47 -0
- package/rules/.source/hippy/hippy_views/refresh/HippyPullFooterViewController.java +65 -0
- package/rules/.source/hippy/hippy_views/refresh/HippyPullHeaderView.java +39 -0
- package/rules/.source/hippy/hippy_views/refresh/HippyPullHeaderViewController.java +104 -0
- package/rules/.source/hippy/hippy_views/refresh/RefreshWrapper.java +237 -0
- package/rules/.source/hippy/hippy_views/refresh/RefreshWrapperController.java +62 -0
- package/rules/.source/hippy/hippy_views/refresh/RefreshWrapperItemController.java +39 -0
- package/rules/.source/hippy/hippy_views/refresh/RefreshWrapperItemView.java +26 -0
- package/rules/.source/hippy/hippy_views/scroll/HippyHorizontalScrollView.java +500 -0
- package/rules/.source/hippy/hippy_views/scroll/HippyOnScrollHelper.java +39 -0
- package/rules/.source/hippy/hippy_views/scroll/HippyScrollView.java +46 -0
- package/rules/.source/hippy/hippy_views/scroll/HippyScrollViewController.java +178 -0
- package/rules/.source/hippy/hippy_views/scroll/HippyScrollViewEventHelper.java +92 -0
- package/rules/.source/hippy/hippy_views/scroll/HippyVerticalScrollView.java +522 -0
- package/rules/.source/hippy/hippy_views/text/HippyTextView.java +512 -0
- package/rules/.source/hippy/hippy_views/text/HippyTextViewController.java +77 -0
- package/rules/.source/hippy/hippy_views/textinput/HippyTextInput.java +668 -0
- package/rules/.source/hippy/hippy_views/textinput/HippyTextInputController.java +528 -0
- package/rules/.source/hippy/hippy_views/textinput/TextInputNode.java +115 -0
- package/rules/.source/hippy/hippy_views/videoview/APEZProvider.java +287 -0
- package/rules/.source/hippy/hippy_views/videoview/APKExpansionSupport.java +82 -0
- package/rules/.source/hippy/hippy_views/videoview/PivotPoint.java +13 -0
- package/rules/.source/hippy/hippy_views/videoview/ScalableType.java +34 -0
- package/rules/.source/hippy/hippy_views/videoview/ScalableVideoView.java +265 -0
- package/rules/.source/hippy/hippy_views/videoview/ScaleManager.java +191 -0
- package/rules/.source/hippy/hippy_views/videoview/Size.java +19 -0
- package/rules/.source/hippy/hippy_views/videoview/VideoHippyView.java +917 -0
- package/rules/.source/hippy/hippy_views/videoview/VideoHippyViewController.java +236 -0
- package/rules/.source/hippy/hippy_views/videoview/ZipResourceFile.java +427 -0
- package/rules/.source/hippy/hippy_views/view/CardRootView.java +28 -0
- package/rules/.source/hippy/hippy_views/view/CustomLayoutView.java +10 -0
- package/rules/.source/hippy/hippy_views/view/CustomNodeView.java +5 -0
- package/rules/.source/hippy/hippy_views/view/DialogViewGroup.java +113 -0
- package/rules/.source/hippy/hippy_views/view/HippyViewGroup.java +2042 -0
- package/rules/.source/hippy/hippy_views/view/HippyViewGroupController.java +583 -0
- package/rules/.source/hippy/hippy_views/view/WindowRoot.java +5 -0
- package/rules/.source/hippy/hippy_views/viewpager/HippyViewPager.java +308 -0
- package/rules/.source/hippy/hippy_views/viewpager/HippyViewPagerAdapter.java +148 -0
- package/rules/.source/hippy/hippy_views/viewpager/HippyViewPagerController.java +246 -0
- package/rules/.source/hippy/hippy_views/viewpager/HippyViewPagerItem.java +27 -0
- package/rules/.source/hippy/hippy_views/viewpager/HippyViewPagerItemController.java +42 -0
- package/rules/.source/hippy/hippy_views/viewpager/ViewPagerPageChangeListener.java +114 -0
- package/rules/.source/hippy/hippy_views/viewpager/event/HippyPageItemExposureEvent.java +40 -0
- package/rules/.source/hippy/hippy_views/viewpager/event/HippyPageScrollEvent.java +43 -0
- package/rules/.source/hippy/hippy_views/viewpager/event/HippyPageScrollStateChangedEvent.java +42 -0
- package/rules/.source/hippy/hippy_views/viewpager/event/HippyPageSelectedEvent.java +42 -0
- package/rules/.source/hippy/hippy_views/webview/HippyWebView.java +160 -0
- package/rules/.source/hippy/hippy_views/webview/HippyWebViewBridge.java +20 -0
- package/rules/.source/hippy/hippy_views/webview/HippyWebViewController.java +103 -0
- package/rules/.source/hippy/hippy_views/webview/HippyWebViewInner.java +77 -0
- package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/SampleApplication.java +1 -0
- package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/base/BaseActivity.java +1 -0
- package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/base/BaseApplication.java +1 -0
- package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/test_reg/Test2Module.java +1 -0
- package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/test_reg/TestALastpolloInit.java +1 -0
- package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/test_reg/TestApolloInit.java +1 -0
- package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/test_reg/TestCacheInit.java +1 -0
- package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/test_reg/TestComponent.java +1 -0
- package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/test_reg/TestKotlinInit.kt +1 -0
- package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/test_reg/TestModule.java +1 -0
- package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/test_reg/TestModule2.kt +1 -0
- package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/test_reg/TestModule3.java +1 -0
- package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/test_reg/TestViewController.java +25 -0
- package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/test_reg/TestViewGroupController.java +24 -0
- package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/ui/EsAppActivity.java +1 -0
- package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/ui/FocusButton.java +1 -0
- package/rules/.source/sdk/app/src/main/java/com/quicktvui/sample/ui/MainActivity.java +1 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/Constants.java +13 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/EsCallback.java +6 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/EsEmptyCallback.java +9 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/EsEventPacket.java +19 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/EsException.java +55 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/EsNativeEventCallback.java +8 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/EsPromise.java +15 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/EsProvider.java +8 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/EsSimplePromise.java +27 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/EsSingleCallback.java +9 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/IDiskCacheManager.java +19 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/IEsAutoInit.java +1 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/IEsInfo.java +18 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/IEsRemoteEventCallback.java +11 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/IEsTraceable.java +7 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/ISoManager.java +31 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/ITakeOverKeyEventListener.java +17 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/PromiseHolder.java +66 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/args/EsArray.java +215 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/args/EsMap.java +287 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/component/EsComponent.java +14 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/component/EsComponentAttribute.java +15 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/component/IEsComponent.java +21 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/component/IEsComponentView.java +8 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/core/EsProxy.java +313 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/core/IEsProxy.java +243 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/cover/IEsCoverView.java +26 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/display/IDisplayManager.java +19 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/image/IEsImageLoader.java +17 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/model/LocalCacheInfo.java +88 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/model/ScreenInfo.java +12 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/model/ThirdEvent.java +13 -0
- package/rules/.source/sdk/base/sdk-base/src/main/java/com/quicktvui/sdk/base/module/IEsModule.java +15 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/EsAPIProvider.java +32 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/EsAppContext.java +13 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/EsData.java +597 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/EsKitInitCallback.java +15 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/EsKitInitCallbackProxy.java +41 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/EsKitStatus.java +14 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/EsManager.java +26 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/EsStartParam.java +17 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/IEsManager.java +83 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/InitConfig.java +287 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/adapter/DefaultHippyLogAdapter.java +27 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/adapter/DefaultRpkLoaderAdapter.java +1 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/adapter/EsApiAdapter.java +22 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/adapter/EsEngineExceptionHandlerAdapter.java +31 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/adapter/EsImageLoaderAdapter.java +141 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/adapter/EsSoLoaderAdapter.java +22 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/adapter/HttpsAdapter.java +1 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/adapter/ProxyHttpAdapter.java +36 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/assets/AssetBundleManager.java +347 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/assets/AssetData.java +39 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/assets/AssetLoadCallback.java +33 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/callback/EsAppLifeCallback.java +19 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/callback/EsAppLifeCallbackImpl.java +60 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/callback/EsAppLifeCallbackImplProxy.java +74 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/card/ESCardBean.java +35 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/card/ESCardCache.java +40 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/card/ESCardCallBack.java +40 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/card/ESCardCallBackAdapter.java +53 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/card/ESCardCallBackImpl.java +50 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/card/ESCardGroupController.java +187 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/card/ESCardGroupView.java +102 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/card/ESCardManager.java +102 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/card/ESCardView.java +716 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/card/ESCardViewComponent.java +190 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/card/WebFrameView.java +125 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/component/BaseHippyViewController.java +30 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/component/CommonViewController.java +290 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/component/EsCommonComponent.java +129 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/component/IOverrideMethods.java +60 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/db/EsDBHelper.java +119 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/db/Migration1_2.java +31 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/db/entity/RpkEntity.java +141 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/display/ESDisplayManager.java +41 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/engine/ESEvents.java +42 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/engine/ESInstanceContext.java +16 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/engine/EsEngine.java +212 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/engine/EsEnginePool.java +262 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/engine/RuntimeManager.java +94 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/entity/DeviceInfo.java +62 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/entity/InfoEntity.java +13 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ext/loadproxy/IEsRpkLoadProxy.java +43 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ext/log/ILogCallback.java +10 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ext/log/LogAdapterFactory.java +14 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ext/package.info +0 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/fragment/EsBaseFragment.java +11 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/fragment/EsFragment.java +181 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/fragment/EsFragmentManager.java +227 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/fragment/EsPageFragment.java +75 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/fragment/IEsFragmentMgr.java +41 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/interceptor/EsDefaultInterceptor.java +8 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/interceptor/IEsInterceptor.java +41 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/interceptor/LaunchEsPageInterceptor.java +15 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/AbsEsImageLoader.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/ApiProviderProxy.java +32 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/BaseHandlerThread.java +76 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/Constants.java +394 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/EsAppLoadHandlerImpl.java +221 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/EsAppLoadHandlerImplV2.java +326 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/EsComponentManager.java +347 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/EsConfigManager.java +81 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/EsContainerTaskV2.java +714 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/EsContentProvider.java +166 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/EsContext.java +354 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/EsContextFinder.java +61 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/EsDiskCacheManager.java +266 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/EsManagerInner.java +463 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/EsPromiseProxy.java +49 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/EsProxyImpl.java +474 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/EsViewManager.java +838 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/EsViewRecord.java +63 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/IEsAppLoadCallback.java +38 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/IEsAppLoadHandler.java +36 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/IEsViewer.java +32 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/SampleAnimatorListener.java +28 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/loader/AbstractLoader.java +135 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/loader/ApiRpkLoader.java +1 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/loader/AssetsRpkLoader.java +79 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/loader/DebugRpkLoader.java +43 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/loader/FileRpkLoader.java +63 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/loader/HttpRpkLoader.java +61 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/loader/IRpkLoader.java +65 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/loader/NexusRpkLoader.java +175 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/loader/RecordInfo.java +37 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/loader/RpkInfo.java +136 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/loader/RpkLoaderFactory.java +60 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/loader/RpkVersion.java +54 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/internal/loader/TaskEntity.java +57 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/jsview/JsSlotView.java +353 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/jsview/JsSlotViewManager.java +363 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/jsview/RecyclerViewHandlerImpl.java +60 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/jsview/SlotModule.java +1 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/jsview/chutil/GenericMotionUtil.java +26 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/jsview/chutil/MouseUtil.java +107 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/jsview/slot/SlotRootView.java +39 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/jsview/slot/SlotRootViewController.java +50 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/jsview/slot/SlotView.java +89 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/jsview/slot/SlotViewController.java +84 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/mdns/NsdRegisterHelper.java +56 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/mediasession/BaseMediaSessionPlayerService.java +104 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/mediasession/EsMediaController.java +111 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/mediasession/EsMediaPlayerService.java +39 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/mediasession/callback/EsCommonMediaSessionCallback.java +374 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/mediasession/manager/IServiceManager.java +16 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/mediasession/manager/ServiceManagerFactory.java +21 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/mediasession/manager/impl/MCommonServiceImpl.java +95 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/mediasession/module/EsMediaSessionModule.java +61 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/module/AppUsageModule.java +170 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/module/CommonModule.java +27 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/module/CommonModuleInfo.java +96 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/module/EsNativeModule.java +878 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/pm/EsPageController.java +49 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/pm/EsPageView.java +202 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/pm/EsRouterController.java +63 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/pm/EsRouterView.java +113 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/pm/IEsPageView.java +20 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/pm/InnerProvider.java +37 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/pm/PageModule.java +37 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/protocol/EsProtocolDispatcher.java +114 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/protocol/EsStartTarget.java +37 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/protocol/Protocol_1.java +78 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/protocol/Protocol_2.java +345 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/sf/UsageManager.java +98 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/sf/db/UsageDbHelper.java +97 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/sf/db/dao/UsageRecordDao.java +34 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/sf/db/entity/UsageRecord.java +96 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/sf/strategy/DefaultStrategyImpl.java +100 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/sf/strategy/IUsageStrategy.java +23 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/tookit/DefaultWindowManager.java +46 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/tookit/ESToolkitManager.java +182 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/tookit/IESToolkit.java +22 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/tookit/ToolkitUseCase.java +22 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/udp/AbstractUdpServer.java +102 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/udp/EsUdpServer.java +177 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/udp/UdpServerConfig.java +28 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/BrowserBaseActivity.java +224 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/BrowserBaseFullActivity.java +118 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/BrowserProxyActivity.java +122 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/BrowserStandardActivity.java +14 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/BrowserStandardNoThemeActivity.java +14 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/BrowserStandardTransparentActivity.java +14 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/IHippyManager.java +36 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/instance/BrowserSingleInstanceActivity0.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/instance/BrowserSingleInstanceActivity1.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/instance/BrowserSingleInstanceActivity2.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/instance/BrowserSingleInstanceActivity3.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/instance/BrowserSingleInstanceActivity4.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/task/BrowserSingleTaskActivity0.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/task/BrowserSingleTaskActivity1.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/task/BrowserSingleTaskActivity2.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/task/BrowserSingleTaskActivity3.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/task/BrowserSingleTaskActivity4.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/top/BrowserSingleTopActivity0.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/top/BrowserSingleTopActivity1.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/top/BrowserSingleTopActivity2.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/top/BrowserSingleTopActivity3.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/normal/single/top/BrowserSingleTopActivity4.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/instance/BrowserSingleInstanceActivity0.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/instance/BrowserSingleInstanceActivity1.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/instance/BrowserSingleInstanceActivity2.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/instance/BrowserSingleInstanceActivity3.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/instance/BrowserSingleInstanceActivity4.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/task/BrowserSingleTaskActivity0.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/task/BrowserSingleTaskActivity1.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/task/BrowserSingleTaskActivity2.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/task/BrowserSingleTaskActivity3.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/task/BrowserSingleTaskActivity4.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/top/BrowserSingleTopActivity0.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/top/BrowserSingleTopActivity1.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/top/BrowserSingleTopActivity2.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/top/BrowserSingleTopActivity3.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/notheme/single/top/BrowserSingleTopActivity4.java +9 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/pg/BasePageLoader.java +20 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/pg/FragmentPageLoader.java +273 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/pg/IPageLoader.java +44 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/pg/RootFragmentView.java +499 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/pg/SubFragmentView.java +85 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/result/PermissionActivityResultHandler.java +132 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/ui/wm/AbstractWindowManager.java +120 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/Am.java +397 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/AutoUtils.java +1 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/CommonUtils.java +150 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/CpuAbiUtils.java +280 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/CrashHandler.java +40 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/DebugLog.java +28 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/DefaultLifecycleObserver.java +35 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/DexUtil.java +75 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/ESExecutors.java +73 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/EsDataFactory.java +76 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/EsDecode.java +37 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/EsIntent.java +40 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/EsNativeEvent.java +63 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/EskitLazyInitHelper.java +20 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/FullScreenUtils.java +73 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/HomeKeyReceiver.java +52 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/HttpRequestUtils.java +30 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/KeyEventUtil.java +71 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/MapperUtils.java +491 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/NetworkSpeedMonitor.java +68 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/NexusRepo.java +70 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/ObjectUtils.java +49 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/ParameterizedTypeImpl.java +23 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/PathHelper.java +23 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/PermissionRequestHelper.java +81 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/PluginUtils.java +71 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/ReflectExecutor.java +77 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/SlotUtils.java +97 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/SpUtils.java +184 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/TaskProgressManager.java +104 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/TimeCheckUtil.java +45 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/UcDeviceUtils.java +95 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/utils/UploadLogKeyDispatcher.java +33 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/views/DebugFocusHelper.java +90 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/views/DebugFocusRoot.java +195 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/views/DebugFocusView.java +65 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/views/EsDefaultCoverView.java +726 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/views/EsGrayFrameLayout.java +65 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/views/EsProgressLoadingView.java +103 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/views/LoadingDrawable.java +1 -0
- package/rules/.source/sdk/core/sdk-core/src/main/java/com/quicktvui/sdk/core/views/MyButton.java +55 -0
- package/rules/.source/sdk/plugin/compiler/src/main/java/com/quicktvui/sdk/compiler/AnnotationProcessor.java +46 -0
- package/rules/.source/sdk/plugin/compiler/src/main/java/com/quicktvui/sdk/compiler/processor/AbstractProcessor.java +1 -0
- package/rules/.source/sdk/plugin/compiler/src/main/java/com/quicktvui/sdk/compiler/processor/ESKitAutoInitProcessor.java +1 -0
- package/rules/.source/sdk/plugin/compiler/src/main/java/com/quicktvui/sdk/compiler/processor/ESKitAutoRegisterProcessor.java +217 -0
- package/rules/.source/sdk/plugin/compiler/src/main/java/com/quicktvui/sdk/compiler/processor/IProcessor.java +12 -0
- package/rules/.source/sdk/plugin/compiler/src/main/java/com/quicktvui/sdk/compiler/utils/Utils.java +78 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/media/audio/mp3/AndroidMP3Encoder.java +19 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/media/audio/mp3/AudioRecorderHandler.java +128 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/media/audio/mp3/AudioRecorderMp3.java +267 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/media/audio/mp3/AudioRecorderMp3Manager.java +140 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/media/audio/mp3/EncodeBuffer.java +27 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/ESAudioRecordModule.java +231 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/assist/QueueProcessingType.java +8 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/assist/deque/BlockingDeque.java +617 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/assist/deque/Deque.java +550 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/assist/deque/LIFOLinkedBlockingDeque.java +42 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/assist/deque/LinkedBlockingDeque.java +1190 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/core/AudioRecordConfiguration.java +168 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/core/AudioRecorderListener.java +11 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/core/AudioRecorderStatus.java +49 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/core/AudioRecorderStatusEnum.java +14 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/core/AudioRecorderType.java +35 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/core/BaseAudioRecorderManager.java +90 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/core/DefaultConfigurationFactory.java +80 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/core/IAudioRecorder.java +23 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/core/naming/FileNameGenerator.java +9 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/core/naming/HashCodeFileNameGenerator.java +11 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/core/naming/Md5FileNameGenerator.java +32 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/core/naming/NoOpFileNameGenerator.java +14 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/pcm/PCMFormat.java +32 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/utils/Preconditions.java +442 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/utils/StorageUtils.java +162 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/wav/AudioRecordListener.java +11 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/wav/AudioRecordStreamListener.java +5 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/wav/AudioRecorder.java +360 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/wav/FileUtil.java +122 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/wav/PCMToWAVTask.java +63 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/wav/PcmToWav.java +193 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/wav/RecordTask.java +103 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/com/quicktvui/support/record/wav/WaveHeader.java +66 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/AndroidMP3Encoder.cpp +57 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/AndroidMP3Encoder.h +20 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/CMakeLists.txt +18 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lame-3.100.tar.gz +0 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/VbrTag.c +1050 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/VbrTag.h +82 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/bitstream.c +1073 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/bitstream.h +44 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/encoder.c +555 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/encoder.h +153 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/fft.c +331 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/fft.h +35 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/gain_analysis.c +468 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/gain_analysis.h +113 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/id3tag.c +1839 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/id3tag.h +65 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/l3side.h +95 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/lame-analysis.h +95 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/lame.c +2602 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/lame.h +1400 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/lame_global_flags.h +186 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/lameerror.h +26 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/machine.h +196 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/mpglib_interface.c +477 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/newmdct.c +1073 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/newmdct.h +27 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/presets.c +390 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/psymodel.c +2111 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/psymodel.h +64 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/quantize.c +1974 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/quantize.h +38 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/quantize_pvt.c +1047 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/quantize_pvt.h +127 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/reservoir.c +289 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/reservoir.h +34 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/set_get.c +2181 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/set_get.h +119 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/tables.c +558 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/tables.h +95 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/takehiro.c +1322 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/util.c +968 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/util.h +635 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/vbrquantize.c +1525 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/vbrquantize.h +28 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/version.c +245 -0
- package/rules/.source/sdk/support/audio-record/src/main/java/cpp/lamemp3/version.h +68 -0
- package/rules/.source/sdk/support/brightness/src/main/java/com/quicktvui/support/brightness/ESBrightnessModule.java +133 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/Action.java +18 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/CanvasActionHandler.java +285 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/CanvasContext.java +184 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/CanvasImageLoadRenderAction.java +53 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/CanvasManager.java +468 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/CanvasNode.java +28 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/CanvasRenderAction.java +39 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/CanvasRenderActionProcessor.java +62 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/CanvasSyncRenderAction.java +23 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/CanvasView.java +19 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/CanvasViewContainer.java +49 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/CanvasWaitChannel.java +59 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/Constants.java +9 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/ESCanvasController.java +370 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/annotation/CanvasField.java +16 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/annotation/CanvasMethod.java +16 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/annotation/Extension.java +59 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/bridge/ActivityStateListener.java +21 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/bridge/ApplicationContext.java +118 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/bridge/Callback.java +37 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/bridge/IPage.java +13 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/bridge/RenderEventCallback.java +76 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/bridge/Response.java +191 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/bridge/SimpleActivityStateListener.java +32 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/canvas2d/CSSFont.java +246 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/canvas2d/CanvasContextRendering2D.java +1462 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/canvas2d/CanvasContextState.java +243 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/canvas2d/CanvasGradient.java +101 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/canvas2d/CanvasPath.java +196 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/canvas2d/CanvasView2D.java +186 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/canvas2d/Circle.java +65 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/canvas2d/LinearGradient.java +40 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/canvas2d/Parser.java +1564 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/canvas2d/RadialGradient.java +167 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/constants/Attributes.java +682 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/executors/ConcurrentExecutor.java +59 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/executors/DelayedExecutor.java +10 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/executors/Executor.java +14 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/executors/Executors.java +99 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/executors/Future.java +17 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/executors/FutureImpl.java +32 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/executors/ScheduledExecutor.java +15 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/executors/ScheduledExecutorImpl.java +49 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/executors/UiExecutor.java +102 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/image/CanvasBitmap.java +123 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/image/CanvasImage.java +109 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/image/CanvasImageCache.java +119 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/image/CanvasImageHelper.java +665 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/image/CanvasImageLoader.java +132 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/image/ImageData.java +12 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/render/DocAnimator.java +166 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/runtime/HapEngine.java +101 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/utils/BitmapUtils.java +242 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/utils/CardThemeUtils.java +79 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/utils/ColorUtil.java +542 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/utils/DigestUtils.java +27 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/utils/DisplayUtil.java +157 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/utils/FloatUtil.java +54 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/utils/IntegerUtil.java +23 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/utils/StringUtils.java +21 -0
- package/rules/.source/sdk/support/canvas/src/main/java/com/quicktvui/support/canvas/utils/ThreadUtils.java +47 -0
- package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/BarChartView.java +170 -0
- package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/ESBarChartViewComponent.java +162 -0
- package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/ESLineChartViewComponent.java +209 -0
- package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/LineChartView.java +160 -0
- package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/chart/BarChart.java +470 -0
- package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/chart/BaseBarChart.java +382 -0
- package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/chart/BaseLineChart.java +156 -0
- package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/chart/LinesChart.java +465 -0
- package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/chart/anim/AngleEvaluator.java +22 -0
- package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/chart/bean/BarBean.java +26 -0
- package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/chart/bean/DataPoint.java +49 -0
- package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/chart/bean/FocusInfo.java +35 -0
- package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/chart/utils/DensityUtil.java +60 -0
- package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/chart/utils/FontUtil.java +40 -0
- package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/chart/utils/LogUtil.java +85 -0
- package/rules/.source/sdk/support/chart/src/main/java/com/quicktvui/support/chart/chart/utils/NumberFormatUtil.java +60 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/AutoInit.java +1 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/animation/AnimationValueType.java +7 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/animation/AnimationView.java +1322 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/animation/AnimationViewComponent.java +1000 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/es/ESView.java +30 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/es/ESViewComponent.java +49 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/image/TransitionImageComponent.java +95 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/image/TransitionImageView.java +261 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/loading/LoadingDrawable.java +253 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/loading/LoadingView.java +13 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/loading/LoadingViewComponent.java +58 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/progress/ESProgressWheelComponent.java +422 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/progress/ProgressWheel.java +625 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/progressbar/ESProgressBarViewComponent.java +254 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/progressbar/TVProgressBarView.java +12 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/progressbar/TVProgressBarViewComponent.java +206 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/qr/QrCodeComponent.java +186 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/qr/QrCodeFactory.java +180 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/rangeseekbar/ESHorizontalSeekBarViewComponent.java +1424 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/rangeseekbar/ESVerticalSeekBarViewComponent.java +122 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/rangeseekbar/OnRangeChangedListener.java +9 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/rangeseekbar/OnRangeFocusListener.java +6 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/rangeseekbar/RangeSeekBar.java +1462 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/rangeseekbar/SavedState.java +49 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/rangeseekbar/SeekBar.java +833 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/rangeseekbar/SeekBarState.java +13 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/rangeseekbar/Utils.java +182 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/rangeseekbar/VerticalRangeSeekBar.java +267 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/rangeseekbar/VerticalSeekBar.java +139 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/seekbar/ESSeekBarViewComponent.java +374 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/seekbar/TVSeekBarView.java +49 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/seekbar/TVSeekBarViewComponent.java +229 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/surfaceview/ESSurfaceView.java +13 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/component/surfaceview/ESSurfaceViewComponent.java +31 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/device/DeviceIdGenerator.java +135 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/device/DeviceIdManager.java +61 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/device/DeviceTypeGenerator.java +19 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/device/DeviceTypeManager.java +63 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/device/ESRuntimeSPConstants.java +8 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/device/IDeviceGenerator.java +10 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/device/RuntimeDeviceModule.java +70 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/activity/AndroidActivityModule.java +46 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/audio/AndroidAudioModule.java +190 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/broadcast/ESBroadcastModule.java +369 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/develop/AndroidDevelopManager.java +62 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/develop/AndroidDevelopModule.java +103 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/develop/Develop.java +85 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/device/AndroidDevice.java +410 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/device/AndroidDeviceManager.java +166 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/device/AndroidDeviceModule.java +313 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/device/DeviceModule.java +75 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/es/ESModule.java +289 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/file/AndroidFileModule.java +622 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/log/ESLogModule.java +59 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/mmap/AndroidMMapModule.java +219 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/mmap/MMapManager.java +350 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/mmap/MMapMode.java +8 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/mmap/MMapSharedData.java +44 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/mmap/MMapSharedDataType.java +15 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/network/AndroidNetworkManager.java +168 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/network/AndroidNetworkModule.java +162 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/network/AndroidNetworkReceiver.java +52 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/permission/AndroidPermissionModule.java +224 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/power/AndroidPowerManager.java +48 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/power/AndroidPowerModule.java +61 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/sp/AndroidSharedPreferencesManager.java +119 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/sp/AndroidSharedPreferencesModule.java +197 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/sqlite/EsSqliteModule.java +380 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/storage/AndroidStorageManager.java +68 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/storage/AndroidStorageModule.java +252 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/toast/ESToastModule.java +62 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/toast/ToastModule.java +385 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/usb/AndroidUsbDeviceManager.java +233 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/usb/AndroidUsbDeviceModule.java +230 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/module/usb/AndroidUsbDeviceReceiver.java +31 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/nativeevent/BaseChangeObserver.java +54 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/nativeevent/BatteryChangeObserver.java +177 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/nativeevent/BluetoothChangeObserver.java +83 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/nativeevent/NativeEventReceiverManager.java +107 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/nativeevent/NetworkChangeObserver.java +134 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/nativeevent/TimeChangeObserver.java +46 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/nativeevent/UsbChangeObserver.java +168 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/utils/BundleMapper.java +215 -0
- package/rules/.source/sdk/support/core/src/main/java/com/quicktvui/support/core/utils/GradientDrawableUtils.java +105 -0
- package/rules/.source/sdk/support/data-group/src/main/java/com/quicktvui/support/data/group/ESGroupData.java +49 -0
- package/rules/.source/sdk/support/data-group/src/main/java/com/quicktvui/support/data/group/ESGroupDataModule.java +291 -0
- package/rules/.source/sdk/support/data-group/src/main/java/com/quicktvui/support/data/group/ESGroupDataType.java +15 -0
- package/rules/.source/sdk/support/data-group/src/main/java/com/quicktvui/support/data/group/ESGroupMode.java +8 -0
- package/rules/.source/sdk/support/data-group/src/main/java/com/quicktvui/support/data/group/ESSharedDataManager.java +526 -0
- package/rules/.source/sdk/support/data-shared/src/main/java/com/quicktvui/support/data/shared/ESSharedData.java +44 -0
- package/rules/.source/sdk/support/data-shared/src/main/java/com/quicktvui/support/data/shared/ESSharedDataManager.java +388 -0
- package/rules/.source/sdk/support/data-shared/src/main/java/com/quicktvui/support/data/shared/ESSharedDataModule.java +218 -0
- package/rules/.source/sdk/support/data-shared/src/main/java/com/quicktvui/support/data/shared/ESSharedDataType.java +15 -0
- package/rules/.source/sdk/support/data-shared/src/main/java/com/quicktvui/support/data/shared/ESSharedMode.java +8 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/ESDeviceInfoModule.java +988 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/SysInfo.java +24128 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/SysInfoSingleTon.java +98 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/beans/ApplicationBean.java +93 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/beans/CpuBean.java +41 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/beans/InputBean.java +69 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/beans/PartitionsBean.java +124 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/beans/SimBean.java +91 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/beans/StorageBean.java +180 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/beans/USBBean.java +48 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/beans/XposedHookBean.java +98 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/AppInfo.java +50 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/AppListInfo.java +42 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/BatteryInfo.java +26 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/BluetoothInfo.java +50 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/BuildInfo.java +35 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/CameraInfo.java +1327 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/DebugInfo.java +25 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/DeviceInfo.java +26 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/EmulatorInfo.java +57 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/HardwareInfo.java +32 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/HookInfo.java +26 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/InputInfo.java +170 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/MapsInfo.java +49 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/MediaCodecInfo.java +29 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/NetWorkInfo.java +150 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/OthersInfo.java +75 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/PartitionsInfo.java +93 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/RootInfo.java +25 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/SOCInfo.java +101 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/StoreInfo.java +31 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/SystemInfo.java +57 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/ThermalInfo.java +54 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/USBInfo.java +146 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/VirtualAppInfo.java +145 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/model/info/WifiInfo.java +52 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/ApplicationUtils.java +18 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/BatteryUtils.java +190 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/CommandUtils.java +173 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/Constants.java +12 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/DebugUtils.java +117 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/DecimalUtils.java +94 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/DensityUtils.java +427 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/DeviceUtils.java +315 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/EmulatorUtils.java +422 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/FileUtils.java +69 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/FormatTools.java +29 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/GatewayUtils.java +380 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/HashUtils.java +61 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/HexUtils.java +43 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/HookUtils.java +147 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/LogUtils.java +274 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/MemoryUtils.java +93 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/NetWorkUtils.java +579 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/OaidUtils.java +48 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/RootUtils.java +219 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/SdUtils.java +298 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/SocUtils.java +287 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/SystemConfigUtils.java +53 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/ThreadPoolUtils.java +89 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/TimeUtils.java +20 -0
- package/rules/.source/sdk/support/device-info/src/main/java/com/quicktvui/support/device/info/utils/XposedHookUtils.java +138 -0
- package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/DefaultConfigurationFactory.java +56 -0
- package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/Download.java +111 -0
- package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/DownloadConfiguration.java +74 -0
- package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/DownloadError.java +9 -0
- package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/DownloadListener.java +7 -0
- package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/DownloadManager.java +201 -0
- package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/DownloadMessage.java +34 -0
- package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/DownloadParams.java +24 -0
- package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/DownloadProgress.java +34 -0
- package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/DownloadState.java +15 -0
- package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/DownloadStatus.java +46 -0
- package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/DownloadTask.java +370 -0
- package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/ESDownloadModule.java +376 -0
- package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/FileDigest.java +47 -0
- package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/HttpRequest.java +3201 -0
- package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/IDownloadTask.java +16 -0
- package/rules/.source/sdk/support/download/src/main/java/com/quicktvui/support/download/StorageUtils.java +162 -0
- package/rules/.source/sdk/support/gif-view/src/main/java/com/quicktvui/giflibrary/GifDecoder.java +32 -0
- package/rules/.source/sdk/support/gif-view/src/main/java/com/quicktvui/giflibrary/GifDrawableTranscoder.java +22 -0
- package/rules/.source/sdk/support/gif-view/src/main/java/com/quicktvui/giflibrary/GifImageLoader.java +22 -0
- package/rules/.source/sdk/support/gif-view/src/main/java/com/quicktvui/giflibrary/GifModule.java +28 -0
- package/rules/.source/sdk/support/gif-view/src/main/java/com/quicktvui/giflibrary/GifSoftwareLayerSetter.java +45 -0
- package/rules/.source/sdk/support/gif-view/src/main/java/com/quicktvui/rastermill/FrameSequence.java +148 -0
- package/rules/.source/sdk/support/gif-view/src/main/java/com/quicktvui/rastermill/FrameSequenceDrawable.java +381 -0
- package/rules/.source/sdk/support/gif-view/src/main/java/com/quicktvui/support/gif/ESGifViewComponent.java +49 -0
- package/rules/.source/sdk/support/gif-view/src/main/java/com/quicktvui/support/gif/GifView.java +24 -0
- package/rules/.source/sdk/support/install-manager/src/main/java/com/quicktvui/support/install/manager/ESInstallManagerModule.java +143 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/ESLog.java +1029 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/LogConfiguration.java +662 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/LogItem.java +72 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/LogLevel.java +168 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/LogUtils.java +173 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/Logger.java +1331 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/flattener/ClassicFlattener.java +36 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/flattener/DefaultFlattener.java +40 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/flattener/Flattener.java +37 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/flattener/Flattener2.java +37 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/flattener/PatternFlattener.java +372 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/FormatException.java +78 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/Formatter.java +34 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/border/BorderFormatter.java +36 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/border/DefaultBorderFormatter.java +99 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/message/json/DefaultJsonFormatter.java +55 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/message/json/JsonFormatter.java +25 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/message/object/BundleFormatter.java +40 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/message/object/IntentFormatter.java +40 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/message/object/ObjectFormatter.java +28 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/message/throwable/DefaultThrowableFormatter.java +31 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/message/throwable/ThrowableFormatter.java +25 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/message/xml/DefaultXmlFormatter.java +63 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/message/xml/XmlFormatter.java +25 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/stacktrace/DefaultStackTraceFormatter.java +50 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/stacktrace/StackTraceFormatter.java +25 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/thread/DefaultThreadFormatter.java +29 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/formatter/thread/ThreadFormatter.java +25 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/interceptor/AbstractFilterInterceptor.java +51 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/interceptor/BlacklistTagsFilterInterceptor.java +71 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/interceptor/Interceptor.java +46 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/interceptor/WhitelistTagsFilterInterceptor.java +71 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/internal/DefaultsFactory.java +157 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/internal/Platform.java +114 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/internal/SystemCompat.java +28 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/internal/printer/file/backup/BackupStrategyWrapper.java +50 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/internal/printer/file/backup/BackupUtil.java +77 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/internal/util/ObjectToStringUtil.java +238 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/internal/util/StackTraceUtil.java +120 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/module/ESLoggerModule.java +332 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/AndroidPrinter.java +145 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/ConsolePrinter.java +55 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/Printer.java +41 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/PrinterSet.java +42 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/RemotePrinter.java +32 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/SystemPrinter.java +24 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/FilePrinter.java +399 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/backup/AbstractBackupStrategy.java +33 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/backup/BackupStrategy.java +33 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/backup/BackupStrategy2.java +69 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/backup/FileSizeBackupStrategy.java +45 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/backup/FileSizeBackupStrategy2.java +52 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/backup/NeverBackupStrategy.java +32 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/clean/CleanStrategy.java +19 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/clean/FileLastModifiedCleanStrategy.java +29 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/clean/NeverCleanStrategy.java +16 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/naming/ChangelessFileNameGenerator.java +44 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/naming/DateFileNameGenerator.java +51 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/naming/FileNameGenerator.java +39 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/naming/LevelFileNameGenerator.java +38 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/writer/SimpleWriter.java +137 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/file/writer/Writer.java +72 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/flattener/DefaultLogFlattener.java +26 -0
- package/rules/.source/sdk/support/log/src/main/java/com/quicktvui/support/log/printer/flattener/LogFlattener.java +26 -0
- package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/ESLongImageViewComponent.java +732 -0
- package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/decoder/CompatDecoderFactory.java +49 -0
- package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/decoder/DecoderFactory.java +23 -0
- package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/decoder/ImageDecoder.java +31 -0
- package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/decoder/ImageRegionDecoder.java +62 -0
- package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/decoder/ImageSource.java +262 -0
- package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/decoder/ImageViewState.java +42 -0
- package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/decoder/SkiaImageDecoder.java +107 -0
- package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/decoder/SkiaImageRegionDecoder.java +171 -0
- package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/decoder/SkiaPooledImageRegionDecoder.java +476 -0
- package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/utils/LongImageEventUtils.java +34 -0
- package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/utils/LongImageLoader.java +180 -0
- package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/utils/luban/Checker.java +196 -0
- package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/utils/luban/CompressionPredicate.java +19 -0
- package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/utils/luban/Engine.java +90 -0
- package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/utils/luban/InputStreamAdapter.java +34 -0
- package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/utils/luban/InputStreamProvider.java +18 -0
- package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/utils/luban/Luban.java +388 -0
- package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/utils/luban/OnCompressListener.java +21 -0
- package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/utils/luban/OnRenameListener.java +22 -0
- package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/view/ESLongImageView.java +306 -0
- package/rules/.source/sdk/support/long-image/src/main/java/com/quicktvui/support/longimage/view/SubsamplingScaleImageView.java +3245 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/AsyncUpdates.java +54 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/Cancellable.java +6 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/FontAssetDelegate.java +40 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/ImageAssetDelegate.java +14 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/L.java +123 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/Lottie.java +26 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/LottieAnimationView.java +1447 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/LottieComposition.java +385 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/LottieCompositionFactory.java +716 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/LottieConfig.java +135 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/LottieDrawable.java +1740 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/LottieImageAsset.java +79 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/LottieListener.java +8 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/LottieLogger.java +17 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/LottieOnCompositionLoadedListener.java +5 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/LottieProperty.java +223 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/LottieResult.java +55 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/LottieTask.java +185 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/LottieTaskIdleListener.java +11 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/OnCompositionLoadedListener.java +15 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/PerformanceTracker.java +97 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/RenderMode.java +41 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/SimpleColorFilter.java +20 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/TextDelegate.java +116 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/AnimatorLister.java +35 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/LPaint.java +60 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/BaseStrokeContent.java +412 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/CompoundTrimPathContent.java +22 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/Content.java +9 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/ContentGroup.java +269 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/DrawingContent.java +11 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/EllipseContent.java +134 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/FillContent.java +194 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/GradientFillContent.java +316 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/GradientStrokeContent.java +181 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/GreedyContent.java +19 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/KeyPathElementContent.java +6 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/MergePathsContent.java +123 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/ModifierContent.java +4 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/PathContent.java +7 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/PolystarContent.java +332 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/RectangleContent.java +180 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/RepeaterContent.java +155 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/RoundedCornersContent.java +225 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/ShapeContent.java +98 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/ShapeModifierContent.java +7 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/StrokeContent.java +77 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/TrimPathContent.java +75 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/content/package-info.java +6 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/BaseKeyframeAnimation.java +356 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/ColorKeyframeAnimation.java +46 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/DropShadowKeyframeAnimation.java +100 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/FloatKeyframeAnimation.java +45 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/GradientColorKeyframeAnimation.java +22 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/IntegerKeyframeAnimation.java +46 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/KeyframeAnimation.java +11 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/MaskKeyframeAnimation.java +40 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/PathKeyframe.java +40 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/PathKeyframeAnimation.java +46 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/PointKeyframeAnimation.java +41 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/ScaleKeyframeAnimation.java +40 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/ShapeKeyframeAnimation.java +42 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/SplitDimensionPathKeyframeAnimation.java +105 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/TextKeyframeAnimation.java +47 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/TransformKeyframeAnimation.java +336 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/ValueCallbackKeyframeAnimation.java +49 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/keyframe/package-info.java +6 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/animation/package-info.java +6 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/manager/FontAssetManager.java +129 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/manager/ImageAssetManager.java +151 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/manager/package-info.java +6 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/CubicCurveData.java +91 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/DocumentData.java +76 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/Font.java +52 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/FontCharacter.java +49 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/KeyPath.java +243 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/KeyPathElement.java +41 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/LottieCompositionCache.java +50 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/Marker.java +37 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/MutablePair.java +57 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/AnimatableColorValue.java +18 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/AnimatableFloatValue.java +19 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/AnimatableGradientColorValue.java +55 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/AnimatableIntegerValue.java +18 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/AnimatablePathValue.java +36 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/AnimatablePointValue.java +20 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/AnimatableScaleValue.java +24 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/AnimatableShapeValue.java +21 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/AnimatableSplitDimensionPathValue.java +37 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/AnimatableTextFrame.java +18 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/AnimatableTextProperties.java +20 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/AnimatableTransform.java +111 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/AnimatableValue.java +15 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/BaseAnimatableValue.java +39 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/animatable/package-info.java +6 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/BlurEffect.java +16 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/CircleShape.java +52 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/ContentModel.java +14 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/GradientColor.java +70 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/GradientFill.java +84 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/GradientStroke.java +110 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/GradientType.java +6 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/Mask.java +42 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/MergePaths.java +74 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/PolystarShape.java +111 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/RectangleShape.java +58 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/Repeater.java +52 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/RoundedCorners.java +32 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/ShapeData.java +110 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/ShapeFill.java +63 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/ShapeGroup.java +42 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/ShapePath.java +45 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/ShapeStroke.java +125 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/ShapeTrimPath.java +76 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/content/package-info.java +6 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/layer/BaseLayer.java +693 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/layer/CompositionLayer.java +236 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/layer/ImageLayer.java +112 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/layer/Layer.java +227 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/layer/NullLayer.java +22 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/layer/ShapeLayer.java +66 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/layer/SolidLayer.java +93 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/layer/TextLayer.java +619 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/model/layer/package-info.java +6 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/network/DefaultLottieFetchResult.java +73 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/network/DefaultLottieNetworkFetcher.java +21 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/network/FileExtension.java +27 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/network/LottieFetchResult.java +36 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/network/LottieNetworkCacheProvider.java +21 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/network/LottieNetworkFetcher.java +20 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/network/NetworkCache.java +200 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/network/NetworkFetcher.java +152 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/AnimatablePathValueParser.java +96 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/AnimatableTextPropertiesParser.java +78 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/AnimatableTransformParser.java +167 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/AnimatableValueParser.java +88 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/BlurEffectParser.java +69 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/CircleShapeParser.java +60 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/ColorParser.java +47 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/ContentModelParser.java +109 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/DocumentDataParser.java +110 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/DropShadowEffect.java +42 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/DropShadowEffectParser.java +88 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/FloatParser.java +17 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/FontCharacterParser.java +81 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/FontParser.java +49 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/GradientColorParser.java +267 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/GradientFillParser.java +100 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/GradientStrokeParser.java +163 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/IntegerParser.java +16 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/JsonUtils.java +121 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/KeyframeParser.java +373 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/KeyframesParser.java +84 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/LayerParser.java +292 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/LottieCompositionMoshiParser.java +270 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/MaskParser.java +68 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/MergePathsParser.java +42 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/PathKeyframeParser.java +27 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/PathParser.java +18 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/PointFParser.java +35 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/PolystarShapeParser.java +91 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/RectangleShapeParser.java +59 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/RepeaterParser.java +57 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/RoundedCornersParser.java +47 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/ScaleXYParser.java +31 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/ShapeDataParser.java +103 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/ShapeFillParser.java +69 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/ShapeGroupParser.java +55 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/ShapePathParser.java +52 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/ShapeStrokeParser.java +130 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/ShapeTrimPathParser.java +61 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/ValueParser.java +10 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/moshi/JsonDataException.java +39 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/moshi/JsonEncodingException.java +30 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/moshi/JsonReader.java +493 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/moshi/JsonScope.java +99 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/moshi/JsonUtf8Reader.java +1046 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/moshi/LinkedHashTreeMap.java +868 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/moshi/package-info.java +6 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/parser/package-info.java +6 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/utils/BaseLottieAnimator.java +117 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/utils/GammaEvaluator.java +64 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/utils/LogcatLogger.java +52 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/utils/Logger.java +36 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/utils/LottieThreadFactory.java +27 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/utils/LottieTrace.java +42 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/utils/LottieValueAnimator.java +330 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/utils/MeanCalculator.java +26 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/utils/MiscUtils.java +113 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/utils/Utils.java +321 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/utils/package-info.java +6 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/value/Keyframe.java +199 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/value/LottieFrameInfo.java +65 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/value/LottieInterpolatedFloatValue.java +22 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/value/LottieInterpolatedIntegerValue.java +22 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/value/LottieInterpolatedPointValue.java +27 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/value/LottieInterpolatedValue.java +28 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/value/LottieRelativeFloatValueCallback.java +39 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/value/LottieRelativeIntegerValueCallback.java +32 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/value/LottieRelativePointValueCallback.java +52 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/value/LottieValueCallback.java +90 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/value/ScaleXY.java +36 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottie/value/SimpleLottieValueCallback.java +10 -0
- package/rules/.source/sdk/support/lottie-view/src/main/java/quicktvui/support/lottieview/ESLottieViewComponent.java +373 -0
- package/rules/.source/sdk/support/network-speed/src/main/java/com/quicktvui/support/network/speed/ESNetworkSpeedModule.java +134 -0
- package/rules/.source/sdk/support/network-speed/src/main/java/com/quicktvui/support/network/speed/util/FormatTools.java +29 -0
- package/rules/.source/sdk/support/player-async/src/main/java/com/quicktvui/support/asyncplayer/ESAsyncPlayerModule.java +96 -0
- package/rules/.source/sdk/support/player-audio-android/src/main/java/com/quicktvui/support/player/audio/android/ESAndroidAudioPlayer.java +484 -0
- package/rules/.source/sdk/support/player-audio-android/src/main/java/com/quicktvui/support/player/audio/android/ESAndroidAudioPlayerModule.java +346 -0
- package/rules/.source/sdk/support/player-audio-android/src/main/java/com/quicktvui/support/player/audio/android/ESAndroidAudioPlayerServiceModule.java +638 -0
- package/rules/.source/sdk/support/player-audio-android/src/main/java/com/quicktvui/support/player/audio/android/ESAudioPlayerService.java +470 -0
- package/rules/.source/sdk/support/player-audio-ijk/src/main/java/com/quicktvui/support/player/audio/bean/PlayInfoBean.java +48 -0
- package/rules/.source/sdk/support/player-audio-ijk/src/main/java/com/quicktvui/support/player/audio/ijk/ESAudioPlayerService.java +528 -0
- package/rules/.source/sdk/support/player-audio-ijk/src/main/java/com/quicktvui/support/player/audio/ijk/ESIJKAudioPlayer.java +827 -0
- package/rules/.source/sdk/support/player-audio-ijk/src/main/java/com/quicktvui/support/player/audio/ijk/ESIJKAudioPlayerModule.java +438 -0
- package/rules/.source/sdk/support/player-audio-ijk/src/main/java/com/quicktvui/support/player/audio/ijk/ESIJKAudioPlayerModule2.java +498 -0
- package/rules/.source/sdk/support/player-audio-ijk/src/main/java/com/quicktvui/support/player/audio/ijk/ESIJKAudioPlayerServiceModule.java +655 -0
- package/rules/.source/sdk/support/player-audio-ijk/src/main/java/com/quicktvui/support/player/audio/utils/Settings.java +28 -0
- package/rules/.source/sdk/support/player-audio-soundpool/src/main/java/com/quicktvui/support/player/audio/soundpool/ESSoundPoolAudioPlayerModule.java +191 -0
- package/rules/.source/sdk/support/player-audio-soundpool/src/main/java/com/quicktvui/support/player/audio/soundpool/Sound.java +52 -0
- package/rules/.source/sdk/support/player-audio-soundpool/src/main/java/com/quicktvui/support/player/audio/soundpool/SoundCache.java +125 -0
- package/rules/.source/sdk/support/player-audio-soundpool/src/main/java/com/quicktvui/support/player/audio/soundpool/SoundPoolManager.java +567 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/aspect/IJKAspectRatioMapper.java +78 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/component/ADPlayerComponent.java +46 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/component/IJKPlayerComponent.java +323 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/module/ESPlayerIJKModule.java +96 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/module/VideoModule.java +181 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/player/AssetDataSource.java +67 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/player/FileMediaDataSource.java +56 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/player/IRenderView.java +97 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/player/IjkLibManager.java +215 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/player/IjkMediaOption.java +64 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/player/IjkVideoPlayer.java +1487 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/player/IjkVideoView.java +1796 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/player/MeasureHelper.java +420 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/player/MediaPlayerCompat.java +66 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/player/RawDataSourceProvider.java +66 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/player/SurfaceRenderView.java +308 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/player/TextureRenderView.java +364 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/service/MediaPlayerService.java +67 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/setting/Settings.java +162 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/utils/AudioChannelType.java +24 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/utils/CommonUtils.java +53 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/utils/DeviceUtil.java +98 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/utils/DisplayAndDecodeTools.java +166 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/utils/FFConcatUtils.java +102 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/utils/FormatTools.java +32 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/utils/MetadataUtils.java +150 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/utils/PlayerThreadTools.java +97 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/utils/StorageUtils.java +159 -0
- package/rules/.source/sdk/support/player-ijk/src/main/java/com/quicktvui/support/player/ijk/utils/TimedHelper.java +233 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/Constants.java +6 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/aspect/AspectRatio.java +46 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/aspect/AspectRatioManager.java +105 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/aspect/AspectRatioSettingMapper.java +44 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/base/ESBaseFrameLayout.java +82 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/base/IPlayerRootView.java +10 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/base/PlayerBaseView.java +750 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/callback/CallbackNotifier.java +277 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/component/PlayerBaseComponent.java +1150 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/decode/Decode.java +45 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/definition/Definition.java +48 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/log/PLog.java +497 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/log/PLogDefaultLoggingDelegate.java +149 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/log/PLoggingDelegate.java +161 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/log/logging.pro +5 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/log/package-info.java +11 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/manager/PlayerConfiguration.java +494 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/model/ADPositionType.java +32 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/model/IPlayerDimension.java +25 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/model/IVideoUrl.java +51 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/model/PlayerDimensionModel.java +166 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/model/VideoUrlModel.java +113 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/player/IPlayer.java +308 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/player/IPlayerCallback.java +127 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/player/PlayerConstant.java +30 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/player/PlayerError.java +85 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/player/PlayerInfo.java +70 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/player/PlayerStatus.java +56 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/player/PlayerStatusEnum.java +54 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/player/PlayerStatusParams.java +21 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/player/PlayerType.java +15 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/setting/PlayerSetting.java +146 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/utils/Preconditions.java +442 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/utils/ScreenUtils.java +121 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/volume/IPlayerVolume.java +12 -0
- package/rules/.source/sdk/support/player-manager/src/main/java/com/quicktvui/support/player/manager/volume/PlayerVolumeModel.java +69 -0
- package/rules/.source/sdk/support/rippleview/src/main/java/com/quicktvui/support/rippleview/ESRippleViewComponent.java +40 -0
- package/rules/.source/sdk/support/rippleview/src/main/java/com/quicktvui/support/rippleview/RippleView.java +208 -0
- package/rules/.source/sdk/support/socket-io/src/main/java/com/quicktvui/support/socketio/IEsSocketIOModule.java +24 -0
- package/rules/.source/sdk/support/socket-io/src/main/java/com/quicktvui/support/socketio/SocketIOClientImpl.java +165 -0
- package/rules/.source/sdk/support/socket-io/src/main/java/com/quicktvui/support/socketio/SocketIoModule.java +161 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/ESSubtitleModule.java +567 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/FileUtils.java +1259 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/IOClass.java +134 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/ISubtitleControl.java +64 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/SubtitleClickListener.java +16 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/Caption.java +27 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/FatalParsingException.java +25 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/FormatASS.java +613 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/FormatSCC.java +1063 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/FormatSRT.java +209 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/FormatSTL.java +654 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/FormatTTML.java +539 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/FormatVTT.java +227 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/Region.java +5 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/Style.java +161 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/SubtitleResult.java +16 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/SubtitleText.java +42 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/Time.java +209 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/TimedTextFileFormat.java +65 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/subtitleFile/TimedTextObject.java +161 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/ui/ESSubtitleView.java +152 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/ui/ESSubtitleViewComponent.java +189 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/ui/ESSubtitleViewController.java +172 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/ui/StrokeTextView.java +116 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/ui/SubtitleTextView.java +70 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/ui/SubtitleView.java +299 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/CharsetListener.java +51 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/Constants.java +74 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/EncodingDetectorInputStream.java +118 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/EncodingDetectorOutputStream.java +82 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/FileCharsetConverter.java +30 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/ReaderFactory.java +144 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/UnicodeBOMInputStream.java +297 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/UniversalDetector.java +394 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/Big5Prober.java +137 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/CharsetProber.java +181 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/EUCJPProber.java +145 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/EUCKRProber.java +135 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/EUCTWProber.java +136 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/EscCharsetProber.java +136 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/GB18030Prober.java +135 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/HebrewProber.java +212 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/Latin1Prober.java +201 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/MBCSGroupProber.java +173 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/SBCSGroupProber.java +185 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/SJISProber.java +144 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/SingleByteCharsetProber.java +187 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/UTF8Prober.java +133 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/contextanalysis/EUCJPContextAnalysis.java +97 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/contextanalysis/JapaneseContextAnalysis.java +255 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/contextanalysis/SJISContextAnalysis.java +93 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/distributionanalysis/Big5DistributionAnalysis.java +962 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/distributionanalysis/CharDistributionAnalysis.java +116 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/distributionanalysis/EUCJPDistributionAnalysis.java +67 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/distributionanalysis/EUCKRDistributionAnalysis.java +630 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/distributionanalysis/EUCTWDistributionAnalysis.java +459 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/distributionanalysis/GB2312DistributionAnalysis.java +508 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/distributionanalysis/JISDistributionAnalysis.java +585 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/distributionanalysis/SJISDistributionAnalysis.java +79 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/BulgarianModel.java +193 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/CyrillicModel.java +194 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/GreekModel.java +194 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/HebrewModel.java +217 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/Ibm855Model.java +73 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/Ibm866Model.java +73 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/Koi8rModel.java +73 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/Latin5BulgarianModel.java +72 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/Latin5Model.java +73 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/Latin7Model.java +73 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/MacCyrillicModel.java +73 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/SequenceModel.java +95 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/ThaiModel.java +239 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/Win1251BulgarianModel.java +73 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/Win1251Model.java +72 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/sequence/Win1253Model.java +72 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/Big5SMModel.java +111 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/CodingStateMachine.java +75 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/EUCJPSMModel.java +115 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/EUCKRSMModel.java +111 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/EUCTWSMModel.java +115 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/GB18030SMModel.java +114 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/HZSMModel.java +113 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/ISO2022CNSMModel.java +116 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/ISO2022JPSMModel.java +118 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/ISO2022KRSMModel.java +117 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/PkgInt.java +117 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/SJISSMModel.java +114 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/SMModel.java +93 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/UCS2BESMModel.java +120 -0
- package/rules/.source/sdk/support/subtitle-converter/src/main/java/com/quicktvui/support/subtitle/converter/universalchardet/prober/statemachine/UTF8SMModel.java +141 -0
- package/rules/.source/sdk/support/swiper-view/src/main/java/com/quicktvui/support/swiper/ESSwiperSlideViewComponent.java +46 -0
- package/rules/.source/sdk/support/swiper-view/src/main/java/com/quicktvui/support/swiper/SwiperView.java +48 -0
- package/rules/.source/sdk/support/ui/icon-view/src/main/java/quicktvui/support/ui/icon/ESAppIconView.java +42 -0
- package/rules/.source/sdk/support/ui/icon-view/src/main/java/quicktvui/support/ui/icon/ESAppIconViewComponent.java +112 -0
- package/rules/.source/sdk/support/ui/image/src/main/java/com/quicktvui/support/ui/image/canvas/ESCanvasParamsUtils.java +117 -0
- package/rules/.source/sdk/support/ui/image/src/main/java/com/quicktvui/support/ui/image/canvas/ESPaint.java +60 -0
- package/rules/.source/sdk/support/ui/image/src/main/java/com/quicktvui/support/ui/image/canvas/ESPaintAction.java +7 -0
- package/rules/.source/sdk/support/ui/image/src/main/java/com/quicktvui/support/ui/image/canvas/ESPath.java +109 -0
- package/rules/.source/sdk/support/ui/image/src/main/java/com/quicktvui/support/ui/image/canvas/ESPathAction.java +10 -0
- package/rules/.source/sdk/support/ui/image/src/main/java/com/quicktvui/support/ui/image/canvas/PorterDuffUtils.java +49 -0
- package/rules/.source/sdk/support/ui/image/src/main/java/com/quicktvui/support/ui/image/crop/ESCroppedImageView.java +285 -0
- package/rules/.source/sdk/support/ui/image/src/main/java/com/quicktvui/support/ui/image/crop/ESCroppedImageViewComponent.java +102 -0
- package/rules/.source/sdk/support/ui/playmarkview/src/main/java/com/quicktvui/support/ui/playmarkview/ESPlayMarkViewComponent.java +104 -0
- package/rules/.source/sdk/support/ui/playmarkview/src/main/java/com/quicktvui/support/ui/playmarkview/PlayMarkView.java +319 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/DensityUtils.java +57 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/ScreenAdapt.java +33 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/ScreenUtils.java +112 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/ViewUtil.java +17 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/item/HippyBaseFrameLayout.java +97 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/item/HomeItemView.java +1564 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/item/ItemFrame.java +188 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/item/ItemFrameComponent.java +58 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/item/ItemViewComponent.java +157 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/item/RippleView.java +257 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/item/RippleViewComponent.java +91 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/item/TitleFocusComponent.java +42 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/item/TitleNormalComponent.java +46 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/item/TitleView.java +522 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/item/TitleViewFocus.java +370 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/AdvanceCenterScroller.java +132 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/EasyListView.java +420 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/EventSender.java +89 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/FocusWatcher.java +66 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/GroupItem.java +40 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/GroupItemPresenter.kt +90 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/ItemView.java +218 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/LargeListComponent.java +115 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/LargeListViewGroup.java +1383 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/LazyDataItem.java +10 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/LoadingItem.java +8 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/LoadingPresenter.java +59 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/MyTemplateHelper.kt +35 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/NumberEpisodeItemPresenter.java +160 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/PendingItemView.java +7 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/StandItemViewPresenter.java +108 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/Template.java +44 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/TemplateBean.java +6 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/TemplateHelper.kt +128 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/TemplateItem.kt +83 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/TemplateItemPresenterSelector.java +36 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/TemplatePresenter.java +13 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/TemplateUtil.java +339 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/largelist/TextEpisodeItemHostView.java +128 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/ESSelectSeriesController.java +156 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/EventSender.java +89 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/SelectSeriesViewGroup.java +1024 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/bean/LazyDataItem.java +10 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/bean/MyData.java +33 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/bean/PageData.java +5 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/bean/Param.java +192 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/bean/TemplateItem.kt +31 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/components/GroupListView.java +49 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/components/LargeListView.java +402 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/presenters/CustomItemViewPresenter.java +133 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/presenters/GroupItemPresenter.kt +123 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/utils/MyCustomHelper.java +468 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/utils/MyTemplateHelper.kt +18 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/utils/TemplateHelper.kt +88 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/selectseries/utils/TemplateUtil.java +415 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/swiftlist/SwiftListComponent.java +104 -0
- package/rules/.source/sdk/support/ui/src/main/java/com/quicktvui/support/ui/swiftlist/SwiftListView.java +563 -0
- package/rules/.source/sdk/support/upload/src/main/java/quicktvui/support/upload/ESUploadModule.java +307 -0
- package/rules/.source/sdk/support/upload/src/main/java/quicktvui/support/upload/UploadManager.java +136 -0
- package/rules/.source/sdk/support/websocket/src/main/java/quicktvui/support/websocket/IEsWebSocketModule.java +24 -0
- package/rules/.source/sdk/support/websocket/src/main/java/quicktvui/support/websocket/WebSocketClient.java +63 -0
- package/rules/.source/sdk/support/websocket/src/main/java/quicktvui/support/websocket/WebSocketImpl.java +55 -0
- package/rules/.source/sdk/support/websocket/src/main/java/quicktvui/support/websocket/WebSocketModule.java +114 -0
- package/rules/.source/sdk/support/webview/src/main/java/com/quicktvui/support/webview/ESWebView.java +235 -0
- package/rules/.source/sdk/support/webview/src/main/java/com/quicktvui/support/webview/ESWebViewComponent.java +1181 -0
- package/rules/.source/sdk/support/x5webview/src/main/java/com/quicktvui/support/x5webview/ESX5WebView.java +352 -0
- package/rules/.source/sdk/support/x5webview/src/main/java/com/quicktvui/support/x5webview/ESX5WebViewComponent.java +1190 -0
- package/rules/.windsurfrules +28 -4
- package/rules/AGENTS.md +28 -4
- package/rules/CLAUDE.md +28 -3
- package/rules/GEMINI.md +26 -3
|
@@ -0,0 +1,3692 @@
|
|
|
1
|
+
package com.tencent.extend.views.fastlist;
|
|
2
|
+
|
|
3
|
+
import android.animation.Animator;
|
|
4
|
+
import android.animation.AnimatorListenerAdapter;
|
|
5
|
+
import android.animation.ObjectAnimator;
|
|
6
|
+
import android.content.Context;
|
|
7
|
+
import android.graphics.Canvas;
|
|
8
|
+
import android.graphics.Rect;
|
|
9
|
+
import android.os.Build;
|
|
10
|
+
import android.os.SystemClock;
|
|
11
|
+
import android.support.v4.view.animation.FastOutSlowInInterpolator;
|
|
12
|
+
import android.util.Log;
|
|
13
|
+
import android.util.SparseArray;
|
|
14
|
+
import android.view.FocusFinder;
|
|
15
|
+
import android.view.KeyEvent;
|
|
16
|
+
import android.view.MotionEvent;
|
|
17
|
+
import android.view.View;
|
|
18
|
+
import android.view.ViewGroup;
|
|
19
|
+
import android.view.ViewTreeObserver;
|
|
20
|
+
import android.view.animation.AccelerateInterpolator;
|
|
21
|
+
import android.view.animation.Animation;
|
|
22
|
+
import android.view.animation.AnimationUtils;
|
|
23
|
+
import android.view.animation.CycleInterpolator;
|
|
24
|
+
|
|
25
|
+
import android.support.annotation.NonNull;
|
|
26
|
+
import android.support.annotation.Nullable;
|
|
27
|
+
import android.support.v7.widget.GridLayoutManager;
|
|
28
|
+
import android.support.v7.widget.LinearLayoutManager;
|
|
29
|
+
import android.support.v7.widget.LinearSmoothScroller;
|
|
30
|
+
import android.support.v7.widget.RecyclerView;
|
|
31
|
+
import android.view.animation.DecelerateInterpolator;
|
|
32
|
+
import android.view.animation.Interpolator;
|
|
33
|
+
import android.view.animation.LayoutAnimationController;
|
|
34
|
+
|
|
35
|
+
import com.tencent.extend.AnimationStore;
|
|
36
|
+
import com.tencent.extend.AutoFocusManager;
|
|
37
|
+
import com.tencent.extend.FocusUtils;
|
|
38
|
+
import com.tencent.extend.ITVView;
|
|
39
|
+
import com.tencent.extend.RenderUtil;
|
|
40
|
+
import com.tencent.extend.StateListPresenter;
|
|
41
|
+
import com.tencent.extend.TVViewUtil;
|
|
42
|
+
import com.tencent.extend.TriggerTaskHost;
|
|
43
|
+
import com.tencent.extend.TriggerTaskManagerModule;
|
|
44
|
+
import com.tencent.extend.anim.FastOutLinearInInterpolator;
|
|
45
|
+
import com.tencent.extend.anim.LinearOutSlowInInterpolator;
|
|
46
|
+
import com.tencent.extend.views.ExtendTag;
|
|
47
|
+
import com.tencent.extend.views.FocusSearchHelper;
|
|
48
|
+
import com.tencent.mtt.hippy.FocusDispatchView;
|
|
49
|
+
import com.tencent.mtt.hippy.HippyEngineContext;
|
|
50
|
+
import com.tencent.mtt.hippy.HippyInstanceContext;
|
|
51
|
+
import com.tencent.mtt.hippy.R;
|
|
52
|
+
import com.tencent.mtt.hippy.common.HippyMap;
|
|
53
|
+
import com.tencent.mtt.hippy.uimanager.ControllerManager;
|
|
54
|
+
import com.tencent.mtt.hippy.uimanager.ExtendViewGroup;
|
|
55
|
+
import com.tencent.mtt.hippy.uimanager.HippyViewEvent;
|
|
56
|
+
import com.tencent.mtt.hippy.uimanager.InternalExtendViewUtil;
|
|
57
|
+
import com.tencent.mtt.hippy.utils.ExtendUtil;
|
|
58
|
+
import com.tencent.mtt.hippy.utils.LogUtils;
|
|
59
|
+
import com.tencent.mtt.hippy.utils.PixelUtil;
|
|
60
|
+
import com.tencent.mtt.hippy.views.list.NegativeLongKeyFlinger;
|
|
61
|
+
import com.tencent.mtt.hippy.views.list.RecycleViewFlinger;
|
|
62
|
+
import com.tencent.mtt.hippy.views.list.TVSingleLineListView;
|
|
63
|
+
import com.tencent.mtt.hippy.views.scroll.HippyScrollViewEventHelper;
|
|
64
|
+
import com.tencent.mtt.hippy.views.view.HippyViewGroup;
|
|
65
|
+
import com.tencent.mtt.hippy.views.view.HippyViewGroupController;
|
|
66
|
+
import com.tencent.mtt.supportui.views.recyclerview.RecyclerViewItem;
|
|
67
|
+
|
|
68
|
+
import java.lang.reflect.Field;
|
|
69
|
+
import java.lang.reflect.Method;
|
|
70
|
+
import java.util.ArrayList;
|
|
71
|
+
import java.util.Arrays;
|
|
72
|
+
|
|
73
|
+
public class TVListView extends MouseRecycleView implements TriggerTaskHost, RecycleViewFlinger.IRecyclerView, ExtendViewGroup, TVSingleLineListView, PostHandlerView, ChildOnScreenScroller.IRecyclerView {
|
|
74
|
+
static final String TAG = "DebugFastList";
|
|
75
|
+
private static final boolean DEBUG = LogUtils.isDebug();
|
|
76
|
+
int mScrollOffset;
|
|
77
|
+
private ChildOnScreenScroller mCustomChildOnScreenScroller;
|
|
78
|
+
private int[] mBlockFocus;
|
|
79
|
+
protected boolean useAdvancedFocusSearch = true;
|
|
80
|
+
protected int mFocusChildPosition = -1;
|
|
81
|
+
private View[] mFocusSearchTargets;
|
|
82
|
+
private boolean mListenFocusSearchOnFail;
|
|
83
|
+
private int[] mBlockFocusOnFail;
|
|
84
|
+
private boolean mShakeEndEnable = true;
|
|
85
|
+
protected int shakePreCheckNumber = 2;
|
|
86
|
+
protected int preloadItemNumber = 0;
|
|
87
|
+
protected int defaultSectionPosition = -1;
|
|
88
|
+
protected boolean enableFocusMemory = true;
|
|
89
|
+
protected int mTargetFocusChildPosition = -1;
|
|
90
|
+
private boolean enableSelectOnFocus = true;
|
|
91
|
+
private int negativeKeyTime = -1;
|
|
92
|
+
private boolean isDetached = false;
|
|
93
|
+
private boolean isAttached = false;
|
|
94
|
+
private boolean skipFocusOnPause = false;
|
|
95
|
+
private boolean enableGridLoading = false;
|
|
96
|
+
private int loadDelayTime = 300;
|
|
97
|
+
//寻焦失败后,强制锁住焦点
|
|
98
|
+
private boolean forceBlockFocusOnFail = false;
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
@Deprecated
|
|
102
|
+
private int initFocusPositionAfterLayout = -1;
|
|
103
|
+
private FocusDispatchView rootView;
|
|
104
|
+
protected EventDeliverer eventDeliverer;
|
|
105
|
+
protected OnScrollListener myOnScrollListener;
|
|
106
|
+
protected OnScrollListener mScrollToTopListener;
|
|
107
|
+
protected OnLoadMoreListener mLoadMoreListener;
|
|
108
|
+
|
|
109
|
+
protected OnLayoutListener mOnLayoutListener;
|
|
110
|
+
|
|
111
|
+
private boolean postTaskPaused = false;
|
|
112
|
+
protected int mManagerType = 1;//1默认LinearLayoutManager 2GridLayoutManager
|
|
113
|
+
private final HippyEngineContext hippyEngineContext;
|
|
114
|
+
protected boolean listShakeSelf;//焦点抖动开关
|
|
115
|
+
|
|
116
|
+
private ListViewControlProp listViewControlProp;
|
|
117
|
+
//列表滚动是否开启
|
|
118
|
+
private boolean touchScrollEnabled = true;
|
|
119
|
+
|
|
120
|
+
private Method scrollByMethod;
|
|
121
|
+
private Object viewFlinger;
|
|
122
|
+
final FocusSearchHelper mFocusSearchHelper;
|
|
123
|
+
|
|
124
|
+
protected boolean dimUnselectedItems = false;
|
|
125
|
+
|
|
126
|
+
public float dimUnselectedAlpha = 0.6f;
|
|
127
|
+
|
|
128
|
+
@Override
|
|
129
|
+
public ListViewControlProp getControlProps() {
|
|
130
|
+
if (listViewControlProp == null) {
|
|
131
|
+
listViewControlProp = new ListViewControlProp();
|
|
132
|
+
}
|
|
133
|
+
return listViewControlProp;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
@Override
|
|
137
|
+
public void diffSetScrollToPosition(int position, int offset) {
|
|
138
|
+
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
private boolean skipRequestFocus = false;
|
|
142
|
+
|
|
143
|
+
@Override
|
|
144
|
+
public void setSkipRequestFocus(boolean b) {
|
|
145
|
+
this.skipRequestFocus = b;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
@Override
|
|
149
|
+
public boolean requestFocus(int direction, Rect previouslyFocusedRect) {
|
|
150
|
+
if(skipRequestFocus){
|
|
151
|
+
Log.e(AutoFocusManager.TAG,"requestFocus return false on skipRequestFocus this:"+ExtendUtil.debugViewLite(this));
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
boolean b = false;
|
|
155
|
+
View view = getFirstFocusHelper().findFirstFocusChildByDirection(direction);
|
|
156
|
+
if (view != null) {
|
|
157
|
+
b = view.requestFocus();
|
|
158
|
+
if(LogUtils.isDebug()) {
|
|
159
|
+
Log.e(FocusDispatchView.TAG, "!!!!!! tvList requestFocus by firstFocusHelper view " + ExtendUtil.debugViewLite(view) + ",this:" + ExtendUtil.debugViewLite(this));
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
if(!b) {
|
|
163
|
+
b = super.requestFocus(direction, previouslyFocusedRect);
|
|
164
|
+
if(LogUtils.isDebug()) {
|
|
165
|
+
Log.e(FocusDispatchView.TAG, "!!!!!! tvList requestFocus return " + b + ",this:" + ExtendUtil.debugViewLite(this));
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return b;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
public TVListView(@NonNull Context context) {
|
|
173
|
+
super(context);
|
|
174
|
+
this.eventDeliverer = new EventDeliverer(Utils.getHippyContext(context));
|
|
175
|
+
hippyEngineContext = ((HippyInstanceContext) context).getEngineContext();
|
|
176
|
+
if (hippyEngineContext != null) {
|
|
177
|
+
listShakeSelf = hippyEngineContext.getGlobalConfigs().getEsBaseConfigManager().IsListShakeSelf();
|
|
178
|
+
scrollFactor = FastListModule.getGlobalConfig(hippyEngineContext).scrollFactor;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
try {
|
|
182
|
+
Field viewFlingerField = RecyclerView.class.getDeclaredField( "mViewFlinger");
|
|
183
|
+
viewFlingerField.setAccessible(true);
|
|
184
|
+
viewFlinger = viewFlingerField.get(this);
|
|
185
|
+
if (viewFlinger != null) {
|
|
186
|
+
Class viewFlingerClass = viewFlinger.getClass();
|
|
187
|
+
Method method = viewFlingerClass.getDeclaredMethod("smoothScrollBy", int.class, int.class,int.class, Interpolator.class);
|
|
188
|
+
method.setAccessible(true);
|
|
189
|
+
scrollByMethod = method;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
} catch (Exception e) {
|
|
193
|
+
Log.e(TAG,"scrollByMethod error msg:"+e.getMessage()+",override scroll failed!");
|
|
194
|
+
e.printStackTrace();
|
|
195
|
+
}
|
|
196
|
+
mFocusSearchHelper = new FocusSearchHelper(this);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
public void setForceBlockFocusOnFail(boolean forceBlockFocusOnFail) {
|
|
200
|
+
this.forceBlockFocusOnFail = forceBlockFocusOnFail;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
@Override
|
|
204
|
+
public void setAdapter(@Nullable Adapter adapter) {
|
|
205
|
+
super.setAdapter(adapter);
|
|
206
|
+
preventSearch = false;
|
|
207
|
+
requestLayoutManual();
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
public void setOnLayoutListener(OnLayoutListener listener) {
|
|
211
|
+
this.mOnLayoutListener = listener;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* @param skipFocusOnPause
|
|
216
|
+
*/
|
|
217
|
+
public void setSkipFocusOnPause(boolean skipFocusOnPause) {
|
|
218
|
+
this.skipFocusOnPause = skipFocusOnPause;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
public void setOnLoadMoreListener(OnLoadMoreListener listener) {
|
|
222
|
+
this.mLoadMoreListener = listener;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
public interface OnLoadMoreListener {
|
|
226
|
+
void onLoadMore(int checkPos, int itemCount);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
public interface OnLayoutListener {
|
|
230
|
+
void onBeforeLayout(TVListView recyclerView, RecyclerView.State state);
|
|
231
|
+
|
|
232
|
+
void onLayoutComplete(TVListView recyclerView, RecyclerView.State state);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
@Override
|
|
236
|
+
public void setOnScrollListener(@Nullable OnScrollListener listener) {
|
|
237
|
+
super.setOnScrollListener(listener);
|
|
238
|
+
this.myOnScrollListener = listener;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
public void setScrollToTopListener(@Nullable OnScrollListener listener) {
|
|
242
|
+
this.mScrollToTopListener = listener;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
public EventDeliverer getEventDeliverer() {
|
|
246
|
+
return eventDeliverer;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
public void pausePostTask() {
|
|
250
|
+
if (LogUtils.isDebug()) {
|
|
251
|
+
Log.i(TAG, "HippyImage pausePostTask called this:" + Utils.hashCode(this) + ",id:" + getId());
|
|
252
|
+
if (mTaskHub != null) {
|
|
253
|
+
for (int i = 0; i < mTaskHub.size(); i++) {
|
|
254
|
+
final SparseArray<Task> tasks = mTaskHub.valueAt(i);
|
|
255
|
+
if (LogUtils.isDebug()) {
|
|
256
|
+
Log.i(TAG, "HippyImage pausePostTask tasks cate " + mTaskHub.keyAt(i) + ",size:" + (tasks == null ? 0 : tasks.size()));
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
this.postTaskPaused = true;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
public void resumePostTask() {
|
|
266
|
+
if (LogUtils.isDebug()) {
|
|
267
|
+
Log.i(TAG, "HippyImage resumePostTask called this:" + Utils.hashCode(this) + ",id:" + getId());
|
|
268
|
+
if (mTaskHub != null) {
|
|
269
|
+
for (int i = 0; i < mTaskHub.size(); i++) {
|
|
270
|
+
final SparseArray<Task> tasks = mTaskHub.valueAt(i);
|
|
271
|
+
Log.i(TAG, "HippyImage resumePostTask tasks cate " + mTaskHub.keyAt(i) + ",size:" + (tasks == null ? 0 : tasks.size()));
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
this.postTaskPaused = false;
|
|
276
|
+
batchTask();
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
public void setNegativeKeyTime(int time) {
|
|
280
|
+
if (mFlinger != null) {
|
|
281
|
+
mFlinger.setKeyReleaseTimeInterval(time);
|
|
282
|
+
} else {
|
|
283
|
+
this.negativeKeyTime = time;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
public void init(int orientation, FastAdapter adapter) {
|
|
288
|
+
setLayoutManager(createLinearLayoutManager(orientation, adapter));
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
protected RecyclerView.LayoutManager createLinearLayoutManager(int orientation, FastAdapter adapter) {
|
|
292
|
+
return new MyLinearLayoutManager(this, orientation, adapter);
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
public void setGridViewLayout(int spanCount, int orientation, FastAdapter adapter) {
|
|
296
|
+
setLayoutManager(createGridLayoutManager(this, spanCount, orientation, adapter));
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
public void setSpanCount(int spanCount) {
|
|
300
|
+
if (getLayoutManagerCompat().getRealLayout() instanceof MyGridLayoutManager) {
|
|
301
|
+
((MyGridLayoutManager) getLayoutManagerCompat().getRealLayout()).setSpanCount(spanCount);
|
|
302
|
+
requestLayoutManual();
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
protected GridLayoutManager createGridLayoutManager(TVListView tvListView, int spanCount, int orientation, FastAdapter adapter) {
|
|
307
|
+
MyGridLayoutManager gridLayoutManager = new MyGridLayoutManager(tvListView, this.getContext(), spanCount, orientation, false, adapter);
|
|
308
|
+
gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
|
|
309
|
+
@Override
|
|
310
|
+
public int getSpanSize(int position) {
|
|
311
|
+
if (adapter != null) {
|
|
312
|
+
final FastAdapter.ItemEntity ie = adapter.getItemEntity(position);
|
|
313
|
+
if (ie != null && ie.getMap() != null) {
|
|
314
|
+
//zhaopeng add 使用span字段,可使用户自定义
|
|
315
|
+
int span = ie.getMap().getInt("span");
|
|
316
|
+
if (span > 0) {
|
|
317
|
+
if (LogUtils.isDebug()) {
|
|
318
|
+
Log.d(TAG, "getSpanSize return custom span :" + span + ",pos:" + position);
|
|
319
|
+
}
|
|
320
|
+
return span;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
int type = adapter.getItemViewType(position);
|
|
324
|
+
if (type == FastAdapter.TYPE_HEADER || type == FastAdapter.TYPE_FOOTER ||
|
|
325
|
+
type == FastAdapter.TYPE_ONE_LINE || type == FastAdapter.TYPE_EMPTY) {
|
|
326
|
+
return gridLayoutManager.getSpanCount();
|
|
327
|
+
} else if (type == FastAdapter.TYPE_SPAN_COUNT_TWO) {
|
|
328
|
+
return 2;
|
|
329
|
+
} else if (type == FastAdapter.TYPE_SPAN_COUNT_THREE) {
|
|
330
|
+
return 3;
|
|
331
|
+
} else if (type == FastAdapter.TYPE_SPAN_COUNT_FOUR) {
|
|
332
|
+
return 4;
|
|
333
|
+
} else if (type == FastAdapter.TYPE_SPAN_COUNT_FIVE) {
|
|
334
|
+
return 5;
|
|
335
|
+
} else if (type == FastAdapter.TYPE_SPAN_COUNT_SIX) {
|
|
336
|
+
return 6;
|
|
337
|
+
} else {
|
|
338
|
+
return 1;
|
|
339
|
+
}
|
|
340
|
+
} else {
|
|
341
|
+
return 1;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
});
|
|
345
|
+
return gridLayoutManager;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
public int getOrientation() {
|
|
349
|
+
return getLayoutManagerCompat().getOrientation();
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
@Deprecated
|
|
353
|
+
public void setInitFocusPositionAfterLayout(int position) {
|
|
354
|
+
this.initFocusPositionAfterLayout = position;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
//zhaopeng add
|
|
358
|
+
private boolean mEnableChildFocusEvent = false;
|
|
359
|
+
|
|
360
|
+
|
|
361
|
+
private HippyViewEvent mChildFocusEvent;
|
|
362
|
+
|
|
363
|
+
public void setDispatchChildFocusEvent(boolean enable) {
|
|
364
|
+
//
|
|
365
|
+
this.mEnableChildFocusEvent = enable;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
public void setUseAdvancedFocusSearch(boolean useAdvancedFocusSearch) {
|
|
369
|
+
this.useAdvancedFocusSearch = useAdvancedFocusSearch;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
public void setBlockFocusOnFail(int[] directions) {
|
|
373
|
+
this.mBlockFocusOnFail = directions;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
public void setBlockFocusOn(int[] directions) {
|
|
377
|
+
this.mBlockFocus = directions;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
public void setShakeEndEnable(boolean shakeEndEnable) {
|
|
381
|
+
this.mShakeEndEnable = shakeEndEnable;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
public void setShakePreCheckNumber(int shakePreCheckNumber) {
|
|
385
|
+
this.shakePreCheckNumber = shakePreCheckNumber;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
public void setPreloadItemNumber(int preLoadItemNumber) {
|
|
389
|
+
this.preloadItemNumber = preLoadItemNumber;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
public void setListenFocusSearchOnFail(boolean mListenFocusSearchOnFail) {
|
|
393
|
+
this.mListenFocusSearchOnFail = mListenFocusSearchOnFail;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
public void setGridLoading(boolean isLoading) {
|
|
397
|
+
enableGridLoading = isLoading;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
public void setLoadDelayTime(int time) {
|
|
401
|
+
loadDelayTime = time;
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
@Override
|
|
405
|
+
public void requestChildFocus(View child, View focused) {
|
|
406
|
+
final View mSelectedChild = findSelectedChild();
|
|
407
|
+
final View lastFocus = mSelectedChild;
|
|
408
|
+
if (mSelectedChild != null) {
|
|
409
|
+
callItemStateChangeIfNeed(lastFocus, StateListPresenter.STATE_NORMAL);
|
|
410
|
+
}
|
|
411
|
+
try {
|
|
412
|
+
super.requestChildFocus(child, focused);
|
|
413
|
+
if (mEnableChildFocusEvent) {
|
|
414
|
+
if (mChildFocusEvent == null) {
|
|
415
|
+
mChildFocusEvent = new HippyViewEvent(InternalExtendViewUtil.CHILD_FOCUS_EVENT_NAME);
|
|
416
|
+
}
|
|
417
|
+
InternalExtendViewUtil.sendEventOnRequestChildFocus(this, child, focused, mChildFocusEvent);
|
|
418
|
+
}
|
|
419
|
+
} catch (Throwable t) {
|
|
420
|
+
Log.e(TAG, "requestChildFocus error :" + t.getMessage() + " focused:" + focused);
|
|
421
|
+
t.printStackTrace();
|
|
422
|
+
}
|
|
423
|
+
callItemStateChangeIfNeed(child, StateListPresenter.STATE_FOCUSED);
|
|
424
|
+
final int focusedChildPosition = getChildAdapterPosition(child);
|
|
425
|
+
|
|
426
|
+
|
|
427
|
+
|
|
428
|
+
changeSelectState(defaultSectionPosition, false);
|
|
429
|
+
if (enableSelectOnFocus) {
|
|
430
|
+
defaultSectionPosition = focusedChildPosition;
|
|
431
|
+
} else {
|
|
432
|
+
changeSelectState(defaultSectionPosition, true);
|
|
433
|
+
}
|
|
434
|
+
mTargetFocusChildPosition = focusedChildPosition;
|
|
435
|
+
if(mFocusChildPosition != focusedChildPosition){
|
|
436
|
+
postInvalidateDelayed(16);
|
|
437
|
+
}
|
|
438
|
+
mFocusChildPosition = focusedChildPosition;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
void requestFocusSearchInChild(View[] targets, View focused, int direction) {
|
|
442
|
+
if (LogUtils.isDebug()) {
|
|
443
|
+
Log.d(FocusDispatchView.TAG, "+++requestFocusSearchInChild");
|
|
444
|
+
}
|
|
445
|
+
mFocusSearchTargets = targets;
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
public void enableFocusMemory(boolean enableFocusMemory) {
|
|
449
|
+
this.enableFocusMemory = enableFocusMemory;
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
public void setEnableSelectOnFocus(boolean enableSelectOnFocus) {
|
|
453
|
+
this.enableSelectOnFocus = enableSelectOnFocus;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
/*** add by zhaopeng ***/
|
|
457
|
+
private boolean mBringToFrontOnFocus = true;
|
|
458
|
+
|
|
459
|
+
public void setBringToFrontOnFocus(boolean mBringToFrontOnFocus) {
|
|
460
|
+
this.mBringToFrontOnFocus = mBringToFrontOnFocus;
|
|
461
|
+
postInvalidateDelayed(16);
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
|
|
465
|
+
@Override
|
|
466
|
+
protected void dispatchDraw(Canvas canvas) {
|
|
467
|
+
super.dispatchDraw(canvas);
|
|
468
|
+
if (mBringToFrontOnFocus && getFocusedChild() != null)
|
|
469
|
+
super.drawChild(canvas, getFocusedChild(), getDrawingTime());
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
@Override
|
|
473
|
+
public boolean drawChild(Canvas canvas, View child, long drawingTime) {
|
|
474
|
+
if (mBringToFrontOnFocus && child == getFocusedChild())
|
|
475
|
+
return true;
|
|
476
|
+
return super.drawChild(canvas, child, drawingTime);
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
void removeSearchInChildRequest() {
|
|
480
|
+
if (LogUtils.isDebug()) {
|
|
481
|
+
Log.d(FocusDispatchView.TAG, "---removeSearchInChildRequest");
|
|
482
|
+
}
|
|
483
|
+
this.mFocusSearchTargets = null;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
View searchInTargets(View[] targets, View focused, int direction) {
|
|
487
|
+
if (LogUtils.isDebug()) {
|
|
488
|
+
Log.d(FocusDispatchView.TAG, "searchInTargets targets size : " + (targets == null ? 0 : targets.length));
|
|
489
|
+
}
|
|
490
|
+
requestFocusSearchInChild(targets, focused, direction);
|
|
491
|
+
View result = null;
|
|
492
|
+
try {
|
|
493
|
+
result = FocusFinder.getInstance().findNextFocus(this, focused, direction);
|
|
494
|
+
} catch (Throwable t) {
|
|
495
|
+
result = null;
|
|
496
|
+
if (LogUtils.isDebug()) {
|
|
497
|
+
Log.e(FocusDispatchView.TAG, "searchInTargets return null on error:" + t.getMessage());
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
removeSearchInChildRequest();
|
|
501
|
+
return result;
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
View searchInTargetsOnRootView(View focused, int direction) {
|
|
505
|
+
|
|
506
|
+
final View root = HippyViewGroup.findPageRootView(this);
|
|
507
|
+
if(LogUtils.isDebug()){
|
|
508
|
+
Log.i(FocusDispatchView.TAG,"searchInTargetsOnRootView root :"+ExtendUtil.debugView(root));
|
|
509
|
+
}
|
|
510
|
+
if(root instanceof HippyViewGroup){
|
|
511
|
+
return ((HippyViewGroup) root).findNextSpecialFocusView(focused,direction);
|
|
512
|
+
}
|
|
513
|
+
return null;
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
@Override
|
|
517
|
+
public View focusSearch(int direction) {
|
|
518
|
+
|
|
519
|
+
preventSearch = false;
|
|
520
|
+
View view = super.focusSearch(direction);
|
|
521
|
+
if (LogUtils.isDebug()) {
|
|
522
|
+
LogUtils.e(FocusDispatchView.TAG, "!!!!!focusSearch in RecyclerView direction " + direction + ",result:" + ExtendUtil.debugViewLite(view)+",this:"+ExtendUtil.debugViewLite(this));
|
|
523
|
+
}
|
|
524
|
+
return view;
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
|
|
528
|
+
|
|
529
|
+
@Override
|
|
530
|
+
public View focusSearch(View focused, int direction) {
|
|
531
|
+
if (LogUtils.isDebug()) {
|
|
532
|
+
LogUtils.e(FocusDispatchView.TAG, "focusSearch with focused before in RecyclerView direction " + direction + ",this:" + ExtendUtil.debugViewLite(this));
|
|
533
|
+
}
|
|
534
|
+
preventSearch = false;
|
|
535
|
+
// int vector = getMyLayoutManager().getVectorByDirection(direction);
|
|
536
|
+
// final int focusPosition = mFocusChildPosition;
|
|
537
|
+
// int targetPosition = focusPosition + vector;
|
|
538
|
+
// if (targetPosition < 0) {
|
|
539
|
+
// Log.e(FocusDispatchView.TAG,"onFocusSearchFailed return on targetPosition < 0");
|
|
540
|
+
// return null;
|
|
541
|
+
// }
|
|
542
|
+
View v = null;
|
|
543
|
+
try {
|
|
544
|
+
v = super.focusSearch(focused, direction);
|
|
545
|
+
if(InternalExtendViewUtil.isContainBlockDirection(direction,mBlockFocus) || forceBlockFocusOnFail){
|
|
546
|
+
boolean blockedOnFail = v != null && ExtendTag.obtainExtendTag(v).getBooleanExtraValue("blockedOnFail");
|
|
547
|
+
boolean testFocusable = InternalExtendViewUtil.testFocusable(v);
|
|
548
|
+
if(v== null || (blockedOnFail && !testFocusable)){
|
|
549
|
+
Log.e(FocusDispatchView.TAG,"focusSearch blockedOnFail testFocusable false v:"+ExtendUtil.debugViewLite(v));
|
|
550
|
+
return focused;
|
|
551
|
+
}else{
|
|
552
|
+
Log.e(FocusDispatchView.TAG,"focusSearch return super, v:"+ExtendUtil.debugViewLite(v)+",testFocusable:"+testFocusable+",blockedOnFail:"+blockedOnFail);
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
}catch (IllegalArgumentException e){
|
|
557
|
+
Log.e(FocusDispatchView.TAG,"focusSearch error focused "+ExtendUtil.debugViewLite(focused)
|
|
558
|
+
+",this:"+ExtendUtil.debugViewLite(this));
|
|
559
|
+
e.printStackTrace();
|
|
560
|
+
}
|
|
561
|
+
if (LogUtils.isDebug()) {
|
|
562
|
+
LogUtils.e(FocusDispatchView.TAG, "focusSearch after with focused,in RecyclerView direction " + direction + ", result = " + v + ",this:" + ExtendUtil.debugViewLite(this));
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
/**
|
|
566
|
+
* 修改触底动画为抖动动画
|
|
567
|
+
*/
|
|
568
|
+
if ((focused == v || v == null)) {
|
|
569
|
+
if (mManagerType == 1) {
|
|
570
|
+
getLayoutManagerCompat().getExecutor().shakeEndIfNeed(focused, v, direction);
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
if ((focused == v || v == null) && listShakeSelf) {
|
|
574
|
+
if (mManagerType == 1) {
|
|
575
|
+
shakeSelf(focused, direction);
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
if(v== null){
|
|
579
|
+
Log.e(FocusDispatchView.TAG,"!!TVList focusSearch return null on this:"+ExtendUtil.debugViewLite(this));
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
return v;
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
private boolean animRunning = false;
|
|
586
|
+
|
|
587
|
+
private void shakeSelf(View view, int direction) {
|
|
588
|
+
if (!animRunning) {
|
|
589
|
+
animRunning = true;
|
|
590
|
+
if (direction == View.FOCUS_DOWN || direction == View.FOCUS_UP) {
|
|
591
|
+
ObjectAnimator shakeSelfAnim = ObjectAnimator.ofFloat(view, View.TRANSLATION_Y.getName(), 0, 5f);//抖动幅度0到5
|
|
592
|
+
shakeSelfAnim.setDuration(250);//持续时间
|
|
593
|
+
shakeSelfAnim.setInterpolator(new CycleInterpolator(2));//抖动次数
|
|
594
|
+
shakeSelfAnim.addListener(new AnimatorListenerAdapter() {
|
|
595
|
+
@Override
|
|
596
|
+
public void onAnimationCancel(Animator animation) {
|
|
597
|
+
animRunning = false;
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
@Override
|
|
601
|
+
public void onAnimationEnd(Animator animation) {
|
|
602
|
+
animRunning = false;
|
|
603
|
+
}
|
|
604
|
+
});
|
|
605
|
+
shakeSelfAnim.start();//开始动画
|
|
606
|
+
} else {
|
|
607
|
+
ObjectAnimator shakeSelfAnim = ObjectAnimator.ofFloat(view, View.TRANSLATION_X.getName(), 0, 5f);//抖动幅度0到5
|
|
608
|
+
shakeSelfAnim.setDuration(250);//持续时间
|
|
609
|
+
shakeSelfAnim.setInterpolator(new CycleInterpolator(2));//抖动次数
|
|
610
|
+
shakeSelfAnim.addListener(new AnimatorListenerAdapter() {
|
|
611
|
+
@Override
|
|
612
|
+
public void onAnimationCancel(Animator animation) {
|
|
613
|
+
animRunning = false;
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
@Override
|
|
617
|
+
public void onAnimationEnd(Animator animation) {
|
|
618
|
+
animRunning = false;
|
|
619
|
+
}
|
|
620
|
+
});
|
|
621
|
+
shakeSelfAnim.start();//开始动画
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
@Override
|
|
627
|
+
protected void onLayout(boolean changed, int l, int t, int r, int b) {
|
|
628
|
+
if (LogUtils.isDebug()) {
|
|
629
|
+
Log.d(FastListView.TAG, "FastRecyclerView onLayout r:" + r + ",b:" + b + ",id:" + getId());
|
|
630
|
+
}
|
|
631
|
+
super.onLayout(changed, l, t, r, b);
|
|
632
|
+
}
|
|
633
|
+
|
|
634
|
+
@Override
|
|
635
|
+
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
|
|
636
|
+
super.onSizeChanged(w, h, oldw, oldh);
|
|
637
|
+
// Log.e(FastListView.TAG, "FastRecyclerView onSizeChanged w:" + w + ",h:" + h);
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
public LayoutManagerCompat getLayoutManagerCompat() {
|
|
641
|
+
return (LayoutManagerCompat) getLayoutManager();
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
@Deprecated
|
|
645
|
+
public TVListView.MyLinearLayoutManager getMyLayoutManager() {
|
|
646
|
+
return (TVListView.MyLinearLayoutManager) this.getLayoutManager();
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
@Deprecated
|
|
650
|
+
public MyGridLayoutManager getMyGridLayoutManager() {
|
|
651
|
+
return (MyGridLayoutManager) getLayoutManager();
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
protected boolean onInterceptRequestChildRectangleOnScreen(@NonNull View child, @NonNull Rect rect, boolean immediate, int direction, boolean focusedChildVisible) {
|
|
655
|
+
return false;
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
View findTargetChildFocus(int position, String name) {
|
|
659
|
+
View targetChild = null;
|
|
660
|
+
targetChild = getLayoutManagerCompat().findViewByPosition(position);
|
|
661
|
+
View result;
|
|
662
|
+
if (name == null) {
|
|
663
|
+
result = targetChild;
|
|
664
|
+
} else {
|
|
665
|
+
result = ControllerManager.findViewByName(this, name);
|
|
666
|
+
}
|
|
667
|
+
return result;
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
public View findSelectedChild() {
|
|
671
|
+
final int select = defaultSectionPosition;
|
|
672
|
+
if (mManagerType == 1 && select > -1) {
|
|
673
|
+
return getLayoutManagerCompat().findViewByPosition(select);
|
|
674
|
+
} else if (mManagerType == 2 && select > -1) {
|
|
675
|
+
return getLayoutManagerCompat().findViewByPosition(select);
|
|
676
|
+
} else {
|
|
677
|
+
return null;
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
protected boolean isSelectedChildValid(View child) {
|
|
682
|
+
boolean b = child != null;
|
|
683
|
+
if (b) {
|
|
684
|
+
b &= child.getVisibility() == View.VISIBLE;
|
|
685
|
+
if (DEBUG) {
|
|
686
|
+
Log.d(TAG, "isSelectedChildValid Visibility():" + b);
|
|
687
|
+
}
|
|
688
|
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
|
689
|
+
b &= child.isAttachedToWindow();
|
|
690
|
+
if (DEBUG) {
|
|
691
|
+
Log.d(TAG, "isSelectedChildValid isAttachedToWindow:" + b);
|
|
692
|
+
}
|
|
693
|
+
}
|
|
694
|
+
b &= TVViewUtil.isViewDescendantOf(child, this);
|
|
695
|
+
if (DEBUG) {
|
|
696
|
+
Log.d(TAG, "isSelectedChildValid isViewDescendantOf:" + b);
|
|
697
|
+
}
|
|
698
|
+
final int visibility = child.getWindowVisibility();
|
|
699
|
+
if (DEBUG) {
|
|
700
|
+
Log.d(TAG, "isSelectedChildValid child visibility:" + visibility);
|
|
701
|
+
}
|
|
702
|
+
}
|
|
703
|
+
return b;
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
protected void onAddDefaultItemDecoration() {
|
|
707
|
+
addItemDecoration(new ItemDecorations.ListEndBlank(getLayoutManagerCompat().getOrientation()));
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
public void setTargetFocusChildPosition(int mTargetFocusChildPosition) {
|
|
711
|
+
this.mTargetFocusChildPosition = mTargetFocusChildPosition;
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
|
|
715
|
+
final static class MyLinearScroller extends LinearSmoothScroller {
|
|
716
|
+
private TVListView recyclerView;
|
|
717
|
+
int offset;
|
|
718
|
+
private View targetTemp;
|
|
719
|
+
private static final String TAG = "TVListScroller";
|
|
720
|
+
|
|
721
|
+
public MyLinearScroller(TVListView recyclerView, int offset) {
|
|
722
|
+
super(recyclerView.getContext());
|
|
723
|
+
this.recyclerView = recyclerView;
|
|
724
|
+
this.offset = offset;
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
@Override
|
|
728
|
+
protected void onTargetFound(View targetView, State state, Action action) {
|
|
729
|
+
if (LogUtils.isDebug()) {
|
|
730
|
+
Log.d(TAG, "TestScroll onTargetFound getRemainingScrollVertical:" + state.getRemainingScrollVertical());
|
|
731
|
+
}
|
|
732
|
+
targetTemp = targetView;
|
|
733
|
+
super.onTargetFound(targetView, state, action);
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
@Override
|
|
737
|
+
protected void onStart() {
|
|
738
|
+
super.onStart();
|
|
739
|
+
// Log.d(TAG, "TestScroll MyLinearScroller onStart offset:" + offset);
|
|
740
|
+
recyclerView.requestLayoutManual();
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
@Override
|
|
744
|
+
protected void onStop() {
|
|
745
|
+
super.onStop();
|
|
746
|
+
// Log.d(TAG, "TestScroll MyLinearScroller onStop");
|
|
747
|
+
}
|
|
748
|
+
|
|
749
|
+
@Override
|
|
750
|
+
public int calculateDtToFit(int viewStart, int viewEnd, int boxStart, int boxEnd, int snapPreference) {
|
|
751
|
+
// int type = recyclerView.getChildOnScreenScroller().getScrollType();
|
|
752
|
+
// int result = 0;
|
|
753
|
+
// if(type == TVRecyclerView.REQUEST_CHILD_ON_SCREEN_TYPE_CENTER) {
|
|
754
|
+
// int offsetOnCenterType = 0;
|
|
755
|
+
// //由于只有smooth滚动中才能实现居中功能,这里暂不实现
|
|
756
|
+
// if (targetTemp != null) {
|
|
757
|
+
// offsetOnCenterType = ChildOnScreenScroller.getScrollToPositionOffsetOnCenterType(recyclerView,targetTemp,recyclerView.getOrientation());
|
|
758
|
+
// }
|
|
759
|
+
// result = boxStart - viewStart + offset + offsetOnCenterType;
|
|
760
|
+
// }else if(type == TVRecyclerView.REQUEST_CHILD_ON_SCREEN_TYPE_NONE){
|
|
761
|
+
// result = 0;
|
|
762
|
+
// }else{
|
|
763
|
+
// result = boxStart - viewStart + offset;
|
|
764
|
+
// }
|
|
765
|
+
// if (LogUtils.isDebug()) {
|
|
766
|
+
// Log.d(TAG, "TestScroll viewStart " + viewStart + ",viewEnd:" + viewEnd + ",boxStart:" + boxStart + ",boxEnd:" + boxEnd);
|
|
767
|
+
// Log.d(TAG, "TestScroll return" + result+",type:"+type +",targetView:"+targetTemp);
|
|
768
|
+
// }
|
|
769
|
+
// return result;
|
|
770
|
+
return boxStart - viewStart + offset;
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
@Override
|
|
774
|
+
public int calculateDyToMakeVisible(View view, int snapPreference) {
|
|
775
|
+
return super.calculateDyToMakeVisible(view, snapPreference);
|
|
776
|
+
}
|
|
777
|
+
|
|
778
|
+
@Override
|
|
779
|
+
public int calculateDxToMakeVisible(View view, int snapPreference) {
|
|
780
|
+
return super.calculateDxToMakeVisible(view, snapPreference);
|
|
781
|
+
}
|
|
782
|
+
|
|
783
|
+
// @Override
|
|
784
|
+
// protected float calculateSpeedPerPixel(DisplayMetrics displayMetrics) {
|
|
785
|
+
// float speed = super.calculateSpeedPerPixel(displayMetrics);
|
|
786
|
+
// if (LogUtils.isDebug()) {
|
|
787
|
+
// Log.d(TAG, "TestScroll calculateSpeedPerPixel speed"+time+",dx:"+dx);
|
|
788
|
+
// }
|
|
789
|
+
// return speed;
|
|
790
|
+
// }
|
|
791
|
+
//
|
|
792
|
+
// @Override
|
|
793
|
+
// protected int calculateTimeForScrolling(int dx) {
|
|
794
|
+
// int time = super.calculateTimeForScrolling(dx);
|
|
795
|
+
// if (LogUtils.isDebug()) {
|
|
796
|
+
// Log.d(TAG, "TestScroll calculateTimeForScrolling"+time+",dx:"+dx);
|
|
797
|
+
// }
|
|
798
|
+
// return time;
|
|
799
|
+
// }
|
|
800
|
+
}
|
|
801
|
+
|
|
802
|
+
|
|
803
|
+
// public MyLinearLayoutManager getSingleLineLayoutManager() {
|
|
804
|
+
// return (MyLinearLayoutManager) getMyLayoutManager().getRealManager();
|
|
805
|
+
// }
|
|
806
|
+
|
|
807
|
+
|
|
808
|
+
private ArrayList<View> mTempList;
|
|
809
|
+
private boolean preventSearch = false;
|
|
810
|
+
|
|
811
|
+
@Override
|
|
812
|
+
public void addFocusables(ArrayList<View> views, int direction) {
|
|
813
|
+
if (LogUtils.isDebug()) {
|
|
814
|
+
LogUtils.d(FocusDispatchView.TAG, "addFocusables views size :" + (views == null ? 0 : views.size()));
|
|
815
|
+
}
|
|
816
|
+
super.addFocusables(views, direction);
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
@Override
|
|
820
|
+
public void addFocusables(ArrayList<View> views, int direction, int focusableMode) {
|
|
821
|
+
//FIXME 这里需要优化性能、return focused后,仍执行这里的代码
|
|
822
|
+
if (LogUtils.isDebug()) {
|
|
823
|
+
LogUtils.d(FocusDispatchView.TAG, "addFocusables start inTVListView " + ",enableFocusMemory:" +enableFocusMemory + ",this:" + ExtendUtil.debugView(this));
|
|
824
|
+
}
|
|
825
|
+
if(mFocusSearchHelper.addFocusables(views,direction)){
|
|
826
|
+
return ;
|
|
827
|
+
}
|
|
828
|
+
if (isPageHidden || (skipFocusOnPause && postTaskPaused)) {
|
|
829
|
+
if (LogUtils.isDebug()) {
|
|
830
|
+
Log.e(FocusDispatchView.TAG, "addFocusables return on isPageHidden :" + isPageHidden + ",postTaskPaused:" + postTaskPaused + ",this:" + this);
|
|
831
|
+
}
|
|
832
|
+
return;
|
|
833
|
+
}
|
|
834
|
+
if (preventSearch && hasFocus()) {
|
|
835
|
+
if (LogUtils.isDebug()) {
|
|
836
|
+
Log.e(FocusDispatchView.TAG, "addFocusables prevantSearch for one time");
|
|
837
|
+
}
|
|
838
|
+
// views.clear();
|
|
839
|
+
return;
|
|
840
|
+
}
|
|
841
|
+
if (mFocusSearchTargets != null) {
|
|
842
|
+
for (View v : mFocusSearchTargets) {
|
|
843
|
+
if (v != null) {
|
|
844
|
+
v.addFocusables(views, direction, focusableMode);
|
|
845
|
+
}
|
|
846
|
+
}
|
|
847
|
+
|
|
848
|
+
if (LogUtils.isDebug()) {
|
|
849
|
+
for (View v : views) {
|
|
850
|
+
Log.d(FocusDispatchView.TAG, "addFocusables In ListView id:" + this.getId() + ",toSearchView:" + v);
|
|
851
|
+
}
|
|
852
|
+
Log.d(FocusDispatchView.TAG, "addFocusables In Target:" + Arrays.toString(mFocusSearchTargets) + " views size:" + views.size() + ",ListView id:" + this.getId());
|
|
853
|
+
}
|
|
854
|
+
return;
|
|
855
|
+
} else {
|
|
856
|
+
if (LogUtils.isDebug()) {
|
|
857
|
+
Log.e(FocusDispatchView.TAG, "addFocusables mFocusSearchTargets is null");
|
|
858
|
+
}
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
if (!hasFocus() && enableFocusMemory) {
|
|
862
|
+
|
|
863
|
+
View target = null;
|
|
864
|
+
target = getLayoutManagerCompat().findViewByPosition(mTargetFocusChildPosition);
|
|
865
|
+
if (!isSelectedChildValid(target)) {
|
|
866
|
+
target = null;
|
|
867
|
+
}
|
|
868
|
+
if (target != null) {
|
|
869
|
+
//没有View被选中
|
|
870
|
+
target.addFocusables(views, direction, focusableMode);
|
|
871
|
+
if (LogUtils.isDebug()) {
|
|
872
|
+
Log.d("SingleLineRecyclerView", "addFocusables on mTargetFocusChildPosition:" + mTargetFocusChildPosition);
|
|
873
|
+
}
|
|
874
|
+
return;
|
|
875
|
+
}
|
|
876
|
+
|
|
877
|
+
View mSelectedChild = findSelectedChild();
|
|
878
|
+
|
|
879
|
+
if (!isSelectedChildValid(findSelectedChild())) {
|
|
880
|
+
mSelectedChild = null;
|
|
881
|
+
}
|
|
882
|
+
final int childCount = getChildCount();
|
|
883
|
+
if (childCount > 0) {
|
|
884
|
+
if (mSelectedChild == null) {
|
|
885
|
+
//没有View被选中
|
|
886
|
+
final View v = getChildAt(0);
|
|
887
|
+
if (v != null && v.getVisibility() == View.VISIBLE) {
|
|
888
|
+
if (LogUtils.isDebug()) {
|
|
889
|
+
Log.d("SingleLineRecyclerView", "没有过焦点的列表,焦点给第一个view:" + v);
|
|
890
|
+
}
|
|
891
|
+
if (mTempList == null) {
|
|
892
|
+
mTempList = new ArrayList();
|
|
893
|
+
} else {
|
|
894
|
+
mTempList.clear();
|
|
895
|
+
}
|
|
896
|
+
v.addFocusables(mTempList, direction, focusableMode);
|
|
897
|
+
if (mTempList.size() > 0) {
|
|
898
|
+
views.addAll(mTempList);
|
|
899
|
+
} else {
|
|
900
|
+
if (LogUtils.isDebug()) {
|
|
901
|
+
Log.e(TAG, "RecyclerView add addFocusables empty,call super.addFocusables(), first child:" + v);
|
|
902
|
+
}
|
|
903
|
+
super.addFocusables(views, direction, focusableMode);
|
|
904
|
+
}
|
|
905
|
+
mTempList.clear();
|
|
906
|
+
} else {
|
|
907
|
+
super.addFocusables(views, direction, focusableMode);
|
|
908
|
+
}
|
|
909
|
+
} else {
|
|
910
|
+
if (LogUtils.isDebug()) {
|
|
911
|
+
Log.d("SingleLineRecyclerView", "有过焦点的列表,焦点给曾经有过焦点的View:mLastFocusedChild:");
|
|
912
|
+
}
|
|
913
|
+
mSelectedChild.addFocusables(views, direction, focusableMode);
|
|
914
|
+
}
|
|
915
|
+
}
|
|
916
|
+
} else {
|
|
917
|
+
super.addFocusables(views, direction, focusableMode);
|
|
918
|
+
if (LogUtils.isDebug()) {
|
|
919
|
+
LogUtils.e(FocusDispatchView.TAG, "addFocusables by super views size:" + views.size() + ",this:" + this);
|
|
920
|
+
}
|
|
921
|
+
}
|
|
922
|
+
if (LogUtils.isDebug()) {
|
|
923
|
+
LogUtils.d(FocusDispatchView.TAG, "addFocusables end TVListView " + ",resultCount:" + views.size());
|
|
924
|
+
// for (View v : views) {
|
|
925
|
+
// Log.d(FocusDispatchView.TAG, "----addFocusables by super add view:" + v);
|
|
926
|
+
// }
|
|
927
|
+
}
|
|
928
|
+
}
|
|
929
|
+
|
|
930
|
+
/**
|
|
931
|
+
* 设置选中的子view,注意此方法只在view已经显示出来以后调用才有效。
|
|
932
|
+
*
|
|
933
|
+
* @param position
|
|
934
|
+
*/
|
|
935
|
+
public void setSelectChildPosition(int position, boolean changeTargetFocusChild) {
|
|
936
|
+
if(LogUtils.isDebug()) {
|
|
937
|
+
Log.i(TAG, "setSelectChildPosition position:" + position + " ,changeTargetFocusChild:" + changeTargetFocusChild + ",hasCode:" + ExtendUtil.debugViewLite(this) + ",enableSelectOnFocus:" + enableSelectOnFocus);
|
|
938
|
+
}
|
|
939
|
+
final View selectedChild = findSelectedChild();
|
|
940
|
+
if (selectedChild != null && selectedChild.isSelected()) {
|
|
941
|
+
selectedChild.setSelected(false);
|
|
942
|
+
}
|
|
943
|
+
if (changeTargetFocusChild) {
|
|
944
|
+
setTargetFocusChildPosition(position);
|
|
945
|
+
}
|
|
946
|
+
this.defaultSectionPosition = position;
|
|
947
|
+
if (!hasFocus() || !enableSelectOnFocus) {
|
|
948
|
+
final View next = findViewByPosition(position);
|
|
949
|
+
changeSelectState(next, true);
|
|
950
|
+
}
|
|
951
|
+
handleDimItems();
|
|
952
|
+
}
|
|
953
|
+
|
|
954
|
+
|
|
955
|
+
public void handleDimItems(){
|
|
956
|
+
if(!dimUnselectedItems){
|
|
957
|
+
return;
|
|
958
|
+
}
|
|
959
|
+
int select = getSelectChildPosition();
|
|
960
|
+
for(int i =0;i < getChildCount(); i ++){
|
|
961
|
+
View child = getChildAt(i);
|
|
962
|
+
int pos = getChildAdapterPosition(child);
|
|
963
|
+
float originAlpha = child.getAlpha();
|
|
964
|
+
float toAlpha = (pos == select) ? 1.0f : dimUnselectedAlpha;
|
|
965
|
+
if(originAlpha != toAlpha){
|
|
966
|
+
Log.i("ZHAOPENG","handleDimItems pos:"+pos+",select:"+select+",originAlpha:"+originAlpha+",toAlpha:"+toAlpha);
|
|
967
|
+
child.setAlpha(toAlpha);
|
|
968
|
+
child.invalidate();
|
|
969
|
+
}
|
|
970
|
+
}
|
|
971
|
+
invalidate();
|
|
972
|
+
}
|
|
973
|
+
|
|
974
|
+
public void UnDimAllItems(){
|
|
975
|
+
if(!dimUnselectedItems){
|
|
976
|
+
return;
|
|
977
|
+
}
|
|
978
|
+
for(int i =0;i < getChildCount(); i ++){
|
|
979
|
+
View child = getChildAt(i);
|
|
980
|
+
float originAlpha = child.getAlpha();
|
|
981
|
+
if(originAlpha != 1.0f){
|
|
982
|
+
Log.i("ZHAOPENG","UnDimAllItems originAlpha:"+originAlpha);
|
|
983
|
+
child.setAlpha(1.0f);
|
|
984
|
+
child.invalidate();
|
|
985
|
+
}
|
|
986
|
+
}
|
|
987
|
+
invalidate();
|
|
988
|
+
}
|
|
989
|
+
|
|
990
|
+
public void clearSelectChild(){
|
|
991
|
+
final View selectedChild = findSelectedChild() == null ? findViewByPosition(defaultSectionPosition) : findSelectedChild();
|
|
992
|
+
// if(LogUtils.isDebug()) {
|
|
993
|
+
// Log.i(TAG, "clearSelectChild selectedChild:" + ExtendUtil.debugViewLite(selectedChild) + " defaultSectionPosition:" + defaultSectionPosition + ",singleSelectPosition:" + getControlProps().singleSelectPosition);
|
|
994
|
+
// }
|
|
995
|
+
if (selectedChild != null) {
|
|
996
|
+
selectedChild.setSelected(false);
|
|
997
|
+
}
|
|
998
|
+
defaultSectionPosition = -1;
|
|
999
|
+
}
|
|
1000
|
+
|
|
1001
|
+
//获取当前selection状态
|
|
1002
|
+
public int getSelectChildPosition() {
|
|
1003
|
+
return defaultSectionPosition;
|
|
1004
|
+
}
|
|
1005
|
+
|
|
1006
|
+
|
|
1007
|
+
void changeSelectState(final int position, boolean select) {
|
|
1008
|
+
final View child = findViewByPosition(position);
|
|
1009
|
+
if (child != null) {
|
|
1010
|
+
changeSelectState(child, select);
|
|
1011
|
+
}
|
|
1012
|
+
}
|
|
1013
|
+
|
|
1014
|
+
void changeSelectState(View child, boolean select) {
|
|
1015
|
+
// if(child != null && child != getFocusedChild()){
|
|
1016
|
+
if (child != null) {
|
|
1017
|
+
if (select) {
|
|
1018
|
+
if (child.isSelected()) {
|
|
1019
|
+
child.setSelected(false);
|
|
1020
|
+
}
|
|
1021
|
+
child.setSelected(true);
|
|
1022
|
+
} else {
|
|
1023
|
+
child.setSelected(false);
|
|
1024
|
+
}
|
|
1025
|
+
}
|
|
1026
|
+
}
|
|
1027
|
+
|
|
1028
|
+
public View findViewByPosition(int position) {
|
|
1029
|
+
return getLayoutManagerCompat().findViewByPosition(position);
|
|
1030
|
+
}
|
|
1031
|
+
|
|
1032
|
+
public void setEnableReFocus(boolean enableReFocus) {
|
|
1033
|
+
getLayoutManagerCompat().getExecutor().enableReFocus = enableReFocus;
|
|
1034
|
+
}
|
|
1035
|
+
|
|
1036
|
+
|
|
1037
|
+
public void destroy() {
|
|
1038
|
+
if (LogUtils.isDebug()) {
|
|
1039
|
+
Log.e(FastAdapter.TAG_POST, "SCROLL_POSTER clearAllTask on destroy this:"+this);
|
|
1040
|
+
}
|
|
1041
|
+
clearAllTask();
|
|
1042
|
+
mLoadMoreListener = null;
|
|
1043
|
+
mScrollToTopListener = null;
|
|
1044
|
+
}
|
|
1045
|
+
|
|
1046
|
+
|
|
1047
|
+
@Override
|
|
1048
|
+
public void requestLayout() {
|
|
1049
|
+
super.requestLayout();
|
|
1050
|
+
}
|
|
1051
|
+
|
|
1052
|
+
void requestLayoutManual() {
|
|
1053
|
+
if (getId() != -1) {
|
|
1054
|
+
RenderUtil.requestNodeLayout(this);
|
|
1055
|
+
} else {
|
|
1056
|
+
RenderUtil.reLayoutView(this, (int) getX(), (int) getY(), getWidth(), getHeight());
|
|
1057
|
+
}
|
|
1058
|
+
}
|
|
1059
|
+
|
|
1060
|
+
@Override
|
|
1061
|
+
public View getHostView() {
|
|
1062
|
+
return this;
|
|
1063
|
+
}
|
|
1064
|
+
|
|
1065
|
+
private NegativeLongKeyFlinger mFlinger;
|
|
1066
|
+
|
|
1067
|
+
@Override
|
|
1068
|
+
public boolean dispatchKeyEventPreIme(KeyEvent event) {
|
|
1069
|
+
|
|
1070
|
+
if(event.getAction() == KeyEvent.ACTION_DOWN && getLayoutExecutor() != null){
|
|
1071
|
+
// Log.i("preventChildOnScreen","dispatchKeyEventPreIme event key:"+ event.getKeyCode()+"-----------------------");
|
|
1072
|
+
switch (event.getKeyCode()) {
|
|
1073
|
+
case KeyEvent.KEYCODE_DPAD_LEFT:
|
|
1074
|
+
getLayoutExecutor().mCurrentDirection = View.FOCUS_LEFT;
|
|
1075
|
+
break;
|
|
1076
|
+
case KeyEvent.KEYCODE_DPAD_RIGHT:
|
|
1077
|
+
getLayoutExecutor().mCurrentDirection = View.FOCUS_RIGHT;
|
|
1078
|
+
break;
|
|
1079
|
+
case KeyEvent.KEYCODE_DPAD_UP:
|
|
1080
|
+
getLayoutExecutor().mCurrentDirection = View.FOCUS_UP;
|
|
1081
|
+
break;
|
|
1082
|
+
case KeyEvent.KEYCODE_DPAD_DOWN:
|
|
1083
|
+
getLayoutExecutor().mCurrentDirection = View.FOCUS_DOWN;
|
|
1084
|
+
break;
|
|
1085
|
+
}
|
|
1086
|
+
}
|
|
1087
|
+
if (negativeKeyTime > 0) {
|
|
1088
|
+
if (mFlinger == null && getLayoutManagerCompat() != null) {
|
|
1089
|
+
mFlinger = new NegativeLongKeyFlinger(this, negativeKeyTime);
|
|
1090
|
+
mFlinger.setVertical(getLayoutManagerCompat().getOrientation() == RecyclerView.VERTICAL);
|
|
1091
|
+
}
|
|
1092
|
+
if (mFlinger != null) {
|
|
1093
|
+
if (mFlinger.dispatchKeyEventPreIme(event)) {
|
|
1094
|
+
return true;
|
|
1095
|
+
}
|
|
1096
|
+
}
|
|
1097
|
+
//接收事件
|
|
1098
|
+
}
|
|
1099
|
+
return super.dispatchKeyEventPreIme(event);
|
|
1100
|
+
|
|
1101
|
+
}
|
|
1102
|
+
|
|
1103
|
+
public ChildOnScreenScroller getChildOnScreenScroller(){
|
|
1104
|
+
return getLayoutExecutor().getChildOnScreenScroller();
|
|
1105
|
+
}
|
|
1106
|
+
|
|
1107
|
+
@Override
|
|
1108
|
+
public int getOffsetX() {
|
|
1109
|
+
return mOffsetX;
|
|
1110
|
+
}
|
|
1111
|
+
|
|
1112
|
+
@Override
|
|
1113
|
+
public int getOffsetY() {
|
|
1114
|
+
return mOffsetY;
|
|
1115
|
+
}
|
|
1116
|
+
|
|
1117
|
+
public void setScrollOffset(int mScrollOffset) {
|
|
1118
|
+
this.mScrollOffset = mScrollOffset;
|
|
1119
|
+
if (getLayoutExecutor().getChildOnScreenScroller() != null) {
|
|
1120
|
+
getLayoutExecutor().getChildOnScreenScroller().setScrollOffset(mScrollOffset);
|
|
1121
|
+
}
|
|
1122
|
+
}
|
|
1123
|
+
|
|
1124
|
+
int advancedFocusSearchMore = 0;
|
|
1125
|
+
|
|
1126
|
+
protected void onAdapterChanged(@Nullable Adapter oldAdapter, @Nullable Adapter newAdapter){
|
|
1127
|
+
|
|
1128
|
+
}
|
|
1129
|
+
|
|
1130
|
+
// public void setEnableAutoFocus(boolean enableAutoFocus) {
|
|
1131
|
+
// Log.d(TAG,"autoFocus setEnableAutoFocus enableAutoFocus:"+enableAutoFocus);
|
|
1132
|
+
// this.enableAutoFocus = enableAutoFocus;
|
|
1133
|
+
// setFocusable(enableAutoFocus);
|
|
1134
|
+
// }
|
|
1135
|
+
|
|
1136
|
+
/**
|
|
1137
|
+
* 执行layoutManager中一些方法的实际执行类,用来将gridLayout与linearLayout的逻辑整合
|
|
1138
|
+
*/
|
|
1139
|
+
public static class LayoutManagerExecutor {
|
|
1140
|
+
|
|
1141
|
+
private final int orientation;
|
|
1142
|
+
final ChildOnScreenScroller.Default mGridChildOnScreenScroller;
|
|
1143
|
+
private FocusEventListener mFocusListener;
|
|
1144
|
+
private final TVListView boundView;
|
|
1145
|
+
private final FastAdapter mAdapter;
|
|
1146
|
+
private int mCurrentDirection = -1;
|
|
1147
|
+
private PendingWork mPendingWork;
|
|
1148
|
+
private ReFocus mReFocus;
|
|
1149
|
+
private boolean enableReFocus = false;
|
|
1150
|
+
private int mSpanCount = 0;
|
|
1151
|
+
private LayoutManagerCompat mLayoutManagerCompat;
|
|
1152
|
+
private boolean isLoading = false;
|
|
1153
|
+
private int mdx, mdy;
|
|
1154
|
+
|
|
1155
|
+
public LayoutManagerExecutor(TVListView tvListView, int mSpanCount, int orientation, LayoutManagerCompat layoutManager, FastAdapter adapter) {
|
|
1156
|
+
this.boundView = tvListView;
|
|
1157
|
+
this.orientation = orientation;
|
|
1158
|
+
this.mSpanCount = mSpanCount;
|
|
1159
|
+
this.mAdapter = adapter;
|
|
1160
|
+
this.setFocusEventListener(new FocusEventListener());
|
|
1161
|
+
mGridChildOnScreenScroller = new ChildOnScreenScroller.Default(orientation);
|
|
1162
|
+
mGridChildOnScreenScroller.setScrollOffset(boundView.mScrollOffset);
|
|
1163
|
+
this.mLayoutManagerCompat = layoutManager;
|
|
1164
|
+
this.boundView.addOnScrollListener(new OnScrollListener() {
|
|
1165
|
+
@Override
|
|
1166
|
+
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
|
|
1167
|
+
super.onScrollStateChanged(recyclerView, newState);
|
|
1168
|
+
}
|
|
1169
|
+
|
|
1170
|
+
@Override
|
|
1171
|
+
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
|
|
1172
|
+
super.onScrolled(recyclerView, dx, dy);
|
|
1173
|
+
mdx = dx;
|
|
1174
|
+
mdy = dy;
|
|
1175
|
+
}
|
|
1176
|
+
});
|
|
1177
|
+
}
|
|
1178
|
+
|
|
1179
|
+
//是否向上滚动
|
|
1180
|
+
public boolean isScrollUp() {
|
|
1181
|
+
return mdy > 0;
|
|
1182
|
+
}
|
|
1183
|
+
|
|
1184
|
+
//是否向左滚动
|
|
1185
|
+
public boolean isScrollLeft() {
|
|
1186
|
+
return mdx > 0;
|
|
1187
|
+
}
|
|
1188
|
+
|
|
1189
|
+
public boolean requestChildRectangleOnScreen(@NonNull RecyclerView parent, @NonNull View child, @NonNull Rect rect, boolean immediate, boolean focusedChildVisible) {
|
|
1190
|
+
// if (boundView.rootView == null) {
|
|
1191
|
+
// this.boundView.rootView = FocusDispatchView.findRootView(parent);
|
|
1192
|
+
// }
|
|
1193
|
+
// if (boundView.rootView != null) {
|
|
1194
|
+
// if (LogUtils.isDebug()) {
|
|
1195
|
+
// Log.e(TAG, "preventChildOnScreen lastKey :" + boundView.rootView.getLastKeyCode());
|
|
1196
|
+
// }
|
|
1197
|
+
// switch (boundView.rootView.getLastKeyCode()) {
|
|
1198
|
+
// case KeyEvent.KEYCODE_DPAD_LEFT:
|
|
1199
|
+
// mCurrentDirection = View.FOCUS_LEFT;
|
|
1200
|
+
// break;
|
|
1201
|
+
// case KeyEvent.KEYCODE_DPAD_RIGHT:
|
|
1202
|
+
// mCurrentDirection = View.FOCUS_RIGHT;
|
|
1203
|
+
// break;
|
|
1204
|
+
// case KeyEvent.KEYCODE_DPAD_UP:
|
|
1205
|
+
// mCurrentDirection = View.FOCUS_UP;
|
|
1206
|
+
// break;
|
|
1207
|
+
// case KeyEvent.KEYCODE_DPAD_DOWN:
|
|
1208
|
+
// mCurrentDirection = View.FOCUS_DOWN;
|
|
1209
|
+
// break;
|
|
1210
|
+
// }
|
|
1211
|
+
// } else {
|
|
1212
|
+
// if (LogUtils.isDebug()) {
|
|
1213
|
+
// Log.e(TAG, "preventChildOnScreen root null");
|
|
1214
|
+
// }
|
|
1215
|
+
// }
|
|
1216
|
+
if (boundView.onInterceptRequestChildRectangleOnScreen(child, rect, immediate, mCurrentDirection, focusedChildVisible)) {
|
|
1217
|
+
Log.e(TAG, "requestChildRectangleOnScreen return on prevent focus direction,direction:" + mCurrentDirection);
|
|
1218
|
+
return true;
|
|
1219
|
+
}
|
|
1220
|
+
final ChildOnScreenScroller scroller = getChildOnScreenScroller();
|
|
1221
|
+
if (scroller != null && scroller.requestChildRectangleOnScreen(parent, child, rect, immediate, mCurrentDirection, focusedChildVisible, parent.getChildAdapterPosition(child))) {
|
|
1222
|
+
return true;
|
|
1223
|
+
}
|
|
1224
|
+
return false;
|
|
1225
|
+
}
|
|
1226
|
+
|
|
1227
|
+
boolean isInReFocus() {
|
|
1228
|
+
// return mReFocus != null && mReFocus.inReFocus;
|
|
1229
|
+
return false;
|
|
1230
|
+
}
|
|
1231
|
+
|
|
1232
|
+
public void setFocusEventListener(FocusEventListener mFocusListener) {
|
|
1233
|
+
this.mFocusListener = mFocusListener;
|
|
1234
|
+
}
|
|
1235
|
+
|
|
1236
|
+
public int getFirstFocusChildPosition(int direction){
|
|
1237
|
+
return boundView.getFirstFocusChildPosition(direction);
|
|
1238
|
+
}
|
|
1239
|
+
|
|
1240
|
+
public void smoothScrollToPosition(RecyclerView recyclerView, State state, int position) {
|
|
1241
|
+
final ChildOnScreenScroller scroller = boundView.mCustomChildOnScreenScroller != null ? boundView.mCustomChildOnScreenScroller : mGridChildOnScreenScroller;
|
|
1242
|
+
if (scroller != null && scroller.smoothScrollToPosition(recyclerView, state, position)) {
|
|
1243
|
+
} else {
|
|
1244
|
+
mLayoutManagerCompat.superSoothScrollToPosition(recyclerView, state, position);
|
|
1245
|
+
}
|
|
1246
|
+
}
|
|
1247
|
+
|
|
1248
|
+
public void startSmoothScroll(SmoothScroller smoothScroller) {
|
|
1249
|
+
mLayoutManagerCompat.superStartSmoothScroll(smoothScroller);
|
|
1250
|
+
}
|
|
1251
|
+
|
|
1252
|
+
public void scrollToPositionWithOffset(int position, int offset) {
|
|
1253
|
+
mLayoutManagerCompat.superScrollToPositionWithOffset(position, offset);
|
|
1254
|
+
}
|
|
1255
|
+
|
|
1256
|
+
public void scrollToPosition(int position) {
|
|
1257
|
+
mLayoutManagerCompat.superScrollToPosition(position);
|
|
1258
|
+
}
|
|
1259
|
+
|
|
1260
|
+
public void onAdapterChanged(@Nullable Adapter oldAdapter, @Nullable Adapter newAdapter) {
|
|
1261
|
+
boundView.defaultSectionPosition = -1;
|
|
1262
|
+
boundView.mOffsetY = 0;
|
|
1263
|
+
boundView.resetScrollOffset();
|
|
1264
|
+
boundView.preventSearch = false;
|
|
1265
|
+
//Log.i(TAG, "onAdapterChanged");
|
|
1266
|
+
mReFocus = null;
|
|
1267
|
+
boundView.onAdapterChanged(oldAdapter,newAdapter);
|
|
1268
|
+
}
|
|
1269
|
+
|
|
1270
|
+
int getItemCount() {
|
|
1271
|
+
return mLayoutManagerCompat.getRealLayout().getItemCount();
|
|
1272
|
+
}
|
|
1273
|
+
|
|
1274
|
+
private boolean searchFocusInItem = false;
|
|
1275
|
+
|
|
1276
|
+
public void setSearchFocusInItem(boolean searchFocusInItem) {
|
|
1277
|
+
this.searchFocusInItem = searchFocusInItem;
|
|
1278
|
+
}
|
|
1279
|
+
|
|
1280
|
+
|
|
1281
|
+
|
|
1282
|
+
boolean firstTime = true;
|
|
1283
|
+
|
|
1284
|
+
public View onFocusSearchFailed(View focused, int focusDirection, RecyclerView.Recycler recycler, RecyclerView.State state) {
|
|
1285
|
+
final int focusPosition = boundView.mFocusChildPosition;
|
|
1286
|
+
int vector = mLayoutManagerCompat.getVectorByDirection(focusDirection, mSpanCount, focusPosition);
|
|
1287
|
+
int targetPosition = focusPosition + vector;
|
|
1288
|
+
if (targetPosition < 0 && !mLayoutManagerCompat.isGridLayout()) {
|
|
1289
|
+
//只有linear模式,这种判断才准确
|
|
1290
|
+
Log.e(FocusDispatchView.TAG, "onFocusSearchFailed return on targetPosition < 0");
|
|
1291
|
+
return null;
|
|
1292
|
+
}
|
|
1293
|
+
// else if (mLayoutManagerCompat.isGridLayout()) {//fix by xxd
|
|
1294
|
+
// //grid模式使用
|
|
1295
|
+
// Log.e(FocusDispatchView.TAG, "onFocusSearchFailed isGridLayout");
|
|
1296
|
+
// return null;
|
|
1297
|
+
// }
|
|
1298
|
+
View resultFromParent = mLayoutManagerCompat.superFocusSearchFailed(focused, focusDirection, recycler, state);
|
|
1299
|
+
View filledByFocusFail = resultFromParent;
|
|
1300
|
+
//从FirstFocusHelper中寻找
|
|
1301
|
+
if (resultFromParent != null) {
|
|
1302
|
+
if (!InternalExtendViewUtil.testFocusable(resultFromParent)) {
|
|
1303
|
+
Log.e(FocusDispatchView.TAG, "resultFromParent no focusable children resultFromParent null");
|
|
1304
|
+
resultFromParent = null;
|
|
1305
|
+
}
|
|
1306
|
+
}
|
|
1307
|
+
|
|
1308
|
+
if (LogUtils.isDebug()) {
|
|
1309
|
+
LogUtils.e(FocusDispatchView.TAG, "onFocusSearchFailed , direction:" + focusDirection + ",resultFromParent :" + resultFromParent+",this:"+ExtendUtil.debugViewLite(boundView));
|
|
1310
|
+
}
|
|
1311
|
+
if (boundView.mListenFocusSearchOnFail && resultFromParent == null) {
|
|
1312
|
+
InternalExtendViewUtil.sendEventOnListFocusSearchFailed(boundView, boundView.getFocusedChild(), focused, focusDirection, getFocusSearchFailEvent());
|
|
1313
|
+
if (LogUtils.isDebug()) {
|
|
1314
|
+
LogUtils.e(FocusDispatchView.TAG, "ul: mListenFocusSearchOnFail == true , return focused direction:" + focusDirection + ",this ID :" + boundView.getId());
|
|
1315
|
+
}
|
|
1316
|
+
boundView.preventSearch = true;
|
|
1317
|
+
return focused;
|
|
1318
|
+
}
|
|
1319
|
+
|
|
1320
|
+
if (InternalExtendViewUtil.isContainBlockDirection(focusDirection, boundView.mBlockFocusOnFail)) {
|
|
1321
|
+
if (resultFromParent == null || boundView.forceBlockFocusOnFail) {
|
|
1322
|
+
if (LogUtils.isDebug()) {
|
|
1323
|
+
Log.e(FocusDispatchView.TAG, "ul 3: mBlockFocusOnFail is true return focused ,direction:" + focusDirection + ",this ID :" + boundView.getId() + ",forceBlockFocusOnFail:" + boundView.forceBlockFocusOnFail);
|
|
1324
|
+
}
|
|
1325
|
+
// if(firstTime){
|
|
1326
|
+
// //2025 zhaopeng 这里简单的处理一下,防止秒懂百科等数据正好卡在屏幕外,导致焦点无法移动
|
|
1327
|
+
// if(LogUtils.isDebug()){
|
|
1328
|
+
// Log.e(FocusDispatchView.TAG,"return on firstTime");
|
|
1329
|
+
// }
|
|
1330
|
+
// firstTime = false;
|
|
1331
|
+
// return null;
|
|
1332
|
+
// }
|
|
1333
|
+
boundView.preventSearch = true;
|
|
1334
|
+
if(filledByFocusFail != null){
|
|
1335
|
+
ExtendTag.putExtraValue(filledByFocusFail,"blockedOnFail",true);
|
|
1336
|
+
Log.e(FocusDispatchView.TAG,"return on resultFromParent == null || boundView.forceBlockFocusOnFail,filledByFocusFail: "+ExtendUtil.debugViewLite(filledByFocusFail));
|
|
1337
|
+
}
|
|
1338
|
+
return filledByFocusFail == null ? focused : filledByFocusFail;
|
|
1339
|
+
} else {
|
|
1340
|
+
if (LogUtils.isDebug()) {
|
|
1341
|
+
Log.e(FocusDispatchView.TAG, "ul 2: mBlockFocusOnFail is true resultFromParent !null ,direction:" + focusDirection + ",this ID :" + boundView.getId());
|
|
1342
|
+
}
|
|
1343
|
+
return resultFromParent;
|
|
1344
|
+
}
|
|
1345
|
+
}
|
|
1346
|
+
if (mFocusListener != null && resultFromParent == null) {
|
|
1347
|
+
final View v = mFocusListener.onFocusSearchFailed(focused, focusDirection, recycler, state);
|
|
1348
|
+
if (v != null) {
|
|
1349
|
+
return v;
|
|
1350
|
+
}
|
|
1351
|
+
}
|
|
1352
|
+
if (LogUtils.isDebug()) {
|
|
1353
|
+
Log.e(FocusDispatchView.TAG, "onFocusSearchFailed return super result:" + resultFromParent + ",this ID :" + boundView.getId());
|
|
1354
|
+
}
|
|
1355
|
+
return resultFromParent;
|
|
1356
|
+
}
|
|
1357
|
+
|
|
1358
|
+
private HippyViewEvent mFocusSearchFailEvent;
|
|
1359
|
+
|
|
1360
|
+
private HippyViewEvent getFocusSearchFailEvent() {
|
|
1361
|
+
if (mFocusSearchFailEvent == null) {
|
|
1362
|
+
mFocusSearchFailEvent = new HippyViewEvent(InternalExtendViewUtil.LIST_FOCUS_SEARCH_FAIL_EVENT_NAME);
|
|
1363
|
+
}
|
|
1364
|
+
return mFocusSearchFailEvent;
|
|
1365
|
+
}
|
|
1366
|
+
|
|
1367
|
+
@Nullable
|
|
1368
|
+
public View onInterceptFocusSearch(@NonNull View focused, int direction) {
|
|
1369
|
+
mCurrentDirection = direction;
|
|
1370
|
+
if (InternalExtendViewUtil.isContainBlockDirection(direction, boundView.mBlockFocus)) {
|
|
1371
|
+
LogUtils.e(FocusDispatchView.TAG, "onInterceptFocusSearch ul 1: containBlockDirection is true return focused ,direction:" + direction + ",this ID :" + boundView.getId());
|
|
1372
|
+
boundView.preventSearch = true;
|
|
1373
|
+
return focused;
|
|
1374
|
+
}
|
|
1375
|
+
if (!boundView.useAdvancedFocusSearch) {
|
|
1376
|
+
return null;
|
|
1377
|
+
}
|
|
1378
|
+
View result = null;
|
|
1379
|
+
if (mFocusListener != null) {
|
|
1380
|
+
result = mFocusListener.onInterceptFocusSearch(focused, direction);
|
|
1381
|
+
}
|
|
1382
|
+
if(result == null){
|
|
1383
|
+
//用户自定义的目标viewID
|
|
1384
|
+
//这里需要从瀑布流内部寻找,不能只在组件内寻找,否则焦点只能在第一个位置出现
|
|
1385
|
+
View focusedDePlaceholder = FastAdapterUtil.finalRealContent(focused);
|
|
1386
|
+
//这里只在此tv-list中寻找,
|
|
1387
|
+
FocusUtils.FocusParams fp = ExtendUtil.findUserSpecifiedNextFocusViewIdTraverse(boundView, focusedDePlaceholder, direction,boundView.getParent() instanceof View ? (View) boundView.getParent() : null);
|
|
1388
|
+
// if(fp.specifiedTargetSID != null && fp.specifiedTargetSID.equals(ExtendUtil.getViewSID(boundView))
|
|
1389
|
+
// || fp.specifiedTargetViewName != null && fp.specifiedTargetViewName.equals(ExtendUtil.getViewName(boundView))){
|
|
1390
|
+
// return focused;
|
|
1391
|
+
// }
|
|
1392
|
+
//Log.e(FocusDispatchView.TAG,"searchInTargets fp:"+fp);
|
|
1393
|
+
|
|
1394
|
+
//2025.07.22 新增nextFocus设成自己时,阻拦逻辑
|
|
1395
|
+
if(fp.specifiedTargetSID != null && fp.specifiedTargetSID.equals(ExtendUtil.getViewSID(focused))) {
|
|
1396
|
+
//Log.d(FocusDispatchView.TAG, "0 : find focused self " + ExtendUtil.debugViewLite(userSpecifiedTarget));
|
|
1397
|
+
result = focused;
|
|
1398
|
+
}else if(fp.specifiedTargetViewName != null && fp.specifiedTargetViewName.equals(ExtendUtil.getViewName(focused))) {
|
|
1399
|
+
result = focused;
|
|
1400
|
+
}
|
|
1401
|
+
if(result != null && ExtendUtil.isPureFocusView(result)) {
|
|
1402
|
+
if(LogUtils.isDebug()) {
|
|
1403
|
+
Log.i(FocusDispatchView.TAG, "advanceFocusSearch in tvList 0 : find nextFocused is self " + ExtendUtil.debugViewLite(result));
|
|
1404
|
+
}
|
|
1405
|
+
return focused;
|
|
1406
|
+
}
|
|
1407
|
+
|
|
1408
|
+
if(LogUtils.isDebug()){
|
|
1409
|
+
Log.i(FocusDispatchView.TAG,"advanceFocusSearch in tvList on onInterceptFocusSearch focused:"+focusedDePlaceholder+",sid:"+ExtendUtil.getViewSID(focusedDePlaceholder)+",FocusParams:"+fp);
|
|
1410
|
+
}
|
|
1411
|
+
View target = ExtendUtil.findViewByNameOrSID(focused,fp, boundView.getRootView());
|
|
1412
|
+
if(LogUtils.isDebug()){
|
|
1413
|
+
Log.i(FocusDispatchView.TAG,"findViewByNameOrSID target:"+ExtendUtil.debugView(target));
|
|
1414
|
+
}
|
|
1415
|
+
if(target != null){
|
|
1416
|
+
if(LogUtils.isDebug()){
|
|
1417
|
+
Log.i(FocusDispatchView.TAG,"advanceFocusSearch in target :"+ExtendUtil.debugView(target)+",FocusParams:"+fp);
|
|
1418
|
+
}
|
|
1419
|
+
result = boundView.searchInTargetsOnRootView(focused, direction);
|
|
1420
|
+
if(result != null && result.getVisibility() != View.VISIBLE){
|
|
1421
|
+
result = null;
|
|
1422
|
+
}
|
|
1423
|
+
if(LogUtils.isDebug() && result != null) {
|
|
1424
|
+
Log.e(FocusDispatchView.TAG, "advanceFocusSearch in tvList return userSpecifiedTarget sid:" + fp.specifiedTargetSID + ",result:" + ExtendUtil.debugView(result));
|
|
1425
|
+
}
|
|
1426
|
+
}
|
|
1427
|
+
}
|
|
1428
|
+
if (result == null) {
|
|
1429
|
+
final int focusPosition = boundView.mFocusChildPosition;
|
|
1430
|
+
int vector = mLayoutManagerCompat.getVectorByDirection(direction, mSpanCount, focusPosition);
|
|
1431
|
+
if (vector != 0 || searchFocusInItem) {
|
|
1432
|
+
result = mLayoutManagerCompat.onInterceptSearchInside(boundView, focusPosition, vector, focused, direction);
|
|
1433
|
+
if(LogUtils.isDebug()) {
|
|
1434
|
+
Log.d(FocusDispatchView.TAG, "mLayoutManagerCompat onInterceptSearchInside result:" + result);
|
|
1435
|
+
}
|
|
1436
|
+
if (result != null) {
|
|
1437
|
+
return result;
|
|
1438
|
+
}
|
|
1439
|
+
}
|
|
1440
|
+
}
|
|
1441
|
+
if (result != null) {
|
|
1442
|
+
boundView.preventSearch = true;
|
|
1443
|
+
}
|
|
1444
|
+
|
|
1445
|
+
if (result == null && InternalExtendViewUtil.isContainBlockDirection(direction, boundView.mBlockFocusOnFail)) {
|
|
1446
|
+
if (mLayoutManagerCompat.isGridLayout()) {
|
|
1447
|
+
boundView.preventSearch = true;
|
|
1448
|
+
return focused;
|
|
1449
|
+
}
|
|
1450
|
+
//这里不等到onFocusSearchFailed了,直接在这里将焦点锁定住
|
|
1451
|
+
final int focusPosition = boundView.mFocusChildPosition;
|
|
1452
|
+
int vector = mLayoutManagerCompat.getVectorByDirection(direction, mSpanCount, focusPosition);
|
|
1453
|
+
int targetPosition = focusPosition + vector;
|
|
1454
|
+
final int itemCount = getItemCount();
|
|
1455
|
+
if ((boundView.shakePreCheckNumber < itemCount && targetPosition > itemCount - boundView.shakePreCheckNumber) || targetPosition < 0) {
|
|
1456
|
+
if (LogUtils.isDebug()) {
|
|
1457
|
+
LogUtils.e(FocusDispatchView.TAG, "onInterceptFocusSearch mBlockFocusOnFail is true return focused ,direction:" + direction + ",this ID :" + boundView.getId() + ",boundView.shakePreCheckNumber:" + boundView.shakePreCheckNumber + ",itemCount:" + itemCount + ",targetPosition:" + targetPosition);
|
|
1458
|
+
}
|
|
1459
|
+
boundView.preventSearch = true;
|
|
1460
|
+
return focused;
|
|
1461
|
+
}
|
|
1462
|
+
//return focused;
|
|
1463
|
+
}
|
|
1464
|
+
|
|
1465
|
+
|
|
1466
|
+
if(result == null){
|
|
1467
|
+
result = boundView.onInterceptFocusSearchFailed(focused,direction);
|
|
1468
|
+
if (result != null) {
|
|
1469
|
+
return result;
|
|
1470
|
+
}
|
|
1471
|
+
}
|
|
1472
|
+
|
|
1473
|
+
if (result == null && mFocusListener != null) {
|
|
1474
|
+
final int focusPosition = boundView.mFocusChildPosition;
|
|
1475
|
+
final View v = mFocusListener.onInterceptFocusSearchFailed(focused, direction, mLayoutManagerCompat.getVectorByDirection(direction, mSpanCount, focusPosition));
|
|
1476
|
+
if (v != null) {
|
|
1477
|
+
return v;
|
|
1478
|
+
}
|
|
1479
|
+
}
|
|
1480
|
+
return result;
|
|
1481
|
+
}
|
|
1482
|
+
|
|
1483
|
+
int getPosition(View view) {
|
|
1484
|
+
return mLayoutManagerCompat.getRealLayout().getPosition(view);
|
|
1485
|
+
}
|
|
1486
|
+
|
|
1487
|
+
boolean isPositionShakeNeed(int pos, int itemCount, int spanCount) {
|
|
1488
|
+
if (mLayoutManagerCompat.isGridLayout()) {
|
|
1489
|
+
final int contentCount = getItemCount() - boundView.shakePreCheckNumber;
|
|
1490
|
+
int rowLine = contentCount / mSpanCount;
|
|
1491
|
+
boolean isLastLine = pos >= mSpanCount * rowLine;
|
|
1492
|
+
return isLastLine && pos > (itemCount - boundView.shakePreCheckNumber);
|
|
1493
|
+
} else {
|
|
1494
|
+
return pos > (itemCount - boundView.shakePreCheckNumber);
|
|
1495
|
+
}
|
|
1496
|
+
}
|
|
1497
|
+
|
|
1498
|
+
void shakeEndIfNeed(View focused, View result, int focusDirection) {
|
|
1499
|
+
if (LogUtils.isDebug()) {
|
|
1500
|
+
LogUtils.d(FocusDispatchView.TAG, "shakeEndIfNeed mShakeEndEnable" + boundView.mShakeEndEnable);
|
|
1501
|
+
}
|
|
1502
|
+
if (boundView.mShakeEndEnable) {
|
|
1503
|
+
final View focusedChild = boundView.getFocusedChild();
|
|
1504
|
+
boolean isDirectionRight;
|
|
1505
|
+
if (orientation == HORIZONTAL) {
|
|
1506
|
+
isDirectionRight = focusDirection == FOCUS_RIGHT;
|
|
1507
|
+
} else {
|
|
1508
|
+
isDirectionRight = focusDirection == FOCUS_DOWN;
|
|
1509
|
+
}
|
|
1510
|
+
if (focusedChild != null) {
|
|
1511
|
+
if (isDirectionRight) {
|
|
1512
|
+
final int pos = getPosition(focusedChild);
|
|
1513
|
+
final int itemCount = getItemCount();
|
|
1514
|
+
final boolean shake = isPositionShakeNeed(pos, itemCount, mSpanCount) && (focused == result || result == null);
|
|
1515
|
+
if (LogUtils.isDebug()) {
|
|
1516
|
+
LogUtils.d(FocusDispatchView.TAG, "MyGridLayout shakeEndIfNeed pos:" + pos + " ,itemCount:" + itemCount + " focused == result:" + (focused == result) + ",result:" + result);
|
|
1517
|
+
}
|
|
1518
|
+
if (shake) {
|
|
1519
|
+
// boundView.exeShakeRecycleView();
|
|
1520
|
+
boundView.exeShakeSelf(focused, focusDirection);
|
|
1521
|
+
} else {
|
|
1522
|
+
if (LogUtils.isDebug()) {
|
|
1523
|
+
LogUtils.d(FocusDispatchView.TAG, "MyGridLayout shakeEndIfNeed no shake");
|
|
1524
|
+
}
|
|
1525
|
+
}
|
|
1526
|
+
}
|
|
1527
|
+
} else {
|
|
1528
|
+
if (LogUtils.isDebug()) {
|
|
1529
|
+
LogUtils.e(FocusDispatchView.TAG, "MyGridLayout shakeEndIfNeed !(focusedChild != null && isDirectionRight)");
|
|
1530
|
+
}
|
|
1531
|
+
}
|
|
1532
|
+
}
|
|
1533
|
+
}
|
|
1534
|
+
|
|
1535
|
+
|
|
1536
|
+
public View findViewByPosition(int pos) {
|
|
1537
|
+
return boundView.findViewByPosition(pos);
|
|
1538
|
+
}
|
|
1539
|
+
|
|
1540
|
+
public void onLayoutCompleted(State state) {
|
|
1541
|
+
if (LogUtils.isDebug()) {
|
|
1542
|
+
Log.e(TAG, "onLayoutCompleted state:" + state + ",mPendingWork:" + mPendingWork + ",this:" + this);
|
|
1543
|
+
Log.i(AutoFocusManager.TAG, "onLayoutCompleted state:" + state + ",mPendingWork:" + mPendingWork + ",this:" + this);
|
|
1544
|
+
if("WaterfallListView".equals(boundView.getClass().getSimpleName())) {
|
|
1545
|
+
Log.e(FocusDispatchView.TAG, "onLayoutCompleted state:" + state + ",mPendingWork:" + mPendingWork + ",this:" + this);
|
|
1546
|
+
}
|
|
1547
|
+
}
|
|
1548
|
+
if (mPendingWork != null) {
|
|
1549
|
+
final int target = mPendingWork.position;
|
|
1550
|
+
final View child = findViewByPosition(target);
|
|
1551
|
+
|
|
1552
|
+
if (child != null && mPendingWork.position == target && mPendingWork.position > -1) {
|
|
1553
|
+
//定位
|
|
1554
|
+
mPendingWork.position = -1;
|
|
1555
|
+
boundView.stopScroll();
|
|
1556
|
+
final int offset = ChildOnScreenScroller.getScrollToPositionOffset(target, boundView, child, orientation, getItemCount(), mGridChildOnScreenScroller.type, 0) + mPendingWork.offset;
|
|
1557
|
+
if (LogUtils.isDebug()) {
|
|
1558
|
+
Log.i(TAG, "!!!!onLayoutCompleted on pendingWork exe scrollBy offset:" + offset);
|
|
1559
|
+
Log.e(AutoFocusManager.TAG, "!!!!onLayoutCompleted on pendingWork exe scrollBy offset:" + offset+",getRemainingScrollVertical :"+state.getRemainingScrollVertical());
|
|
1560
|
+
}
|
|
1561
|
+
// mReFocus = new ReFocus(target,null,null);
|
|
1562
|
+
if(target == 0){
|
|
1563
|
+
//0的时候不需要滚动
|
|
1564
|
+
boundView.resetScrollOffset();
|
|
1565
|
+
Log.e(TAG,"!!!!onLayoutCompleted on pendingWork return on getRemainingScrollVertical :"+state.getRemainingScrollVertical());
|
|
1566
|
+
}else {
|
|
1567
|
+
scrollToPositionWithOffset(target, offset);
|
|
1568
|
+
boundView.requestLayoutManual();
|
|
1569
|
+
}
|
|
1570
|
+
// if (orientation == VERTICAL) {
|
|
1571
|
+
// //* -1是由于与系统scrollToPositionWithOffset的方向一致
|
|
1572
|
+
// boundView.scrollBy(0, offset * -1);
|
|
1573
|
+
//// boundView.overScrollBy()
|
|
1574
|
+
// } else {
|
|
1575
|
+
// boundView.scrollBy(offset * -1, 0);
|
|
1576
|
+
// }
|
|
1577
|
+
// RenderUtil.reLayoutView(boundView);
|
|
1578
|
+
}
|
|
1579
|
+
}
|
|
1580
|
+
//发送滚动事件
|
|
1581
|
+
boundView.handleScrollValue();
|
|
1582
|
+
handleFocusAfterLayout(state);
|
|
1583
|
+
if(boundView.mPendingLayoutAnim != null){
|
|
1584
|
+
if(LogUtils.isDebug()) {
|
|
1585
|
+
Log.i(TAG, "onLayoutCompleted startItemFlyInAnimation");
|
|
1586
|
+
}
|
|
1587
|
+
boundView.startItemFlyInAnimation(boundView.mPendingLayoutAnim);
|
|
1588
|
+
boundView.mPendingLayoutAnim = null;
|
|
1589
|
+
}
|
|
1590
|
+
boundView.scaleChildren4Coverflow();
|
|
1591
|
+
}
|
|
1592
|
+
|
|
1593
|
+
public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) {
|
|
1594
|
+
handleFocusBeforeLayout(recycler, state);
|
|
1595
|
+
if (LogUtils.isDebug()) {
|
|
1596
|
+
Log.e(TAG, "onLayoutChildren childCount:" + boundView.getChildCount());
|
|
1597
|
+
}
|
|
1598
|
+
}
|
|
1599
|
+
|
|
1600
|
+
boolean takeoverFocusIfNeed() {
|
|
1601
|
+
if (boundView.hasFocus()) {
|
|
1602
|
+
boundView.setFocusable(true);
|
|
1603
|
+
boundView.requestFocus();
|
|
1604
|
+
if (LogUtils.isDebug()) {
|
|
1605
|
+
Log.e(FocusDispatchView.TAG, "+++takeoverFocusIfNeed takeover recyclerView focused:" + boundView.isFocused() + ",this:" + boundView);
|
|
1606
|
+
}
|
|
1607
|
+
return true;
|
|
1608
|
+
}
|
|
1609
|
+
return false;
|
|
1610
|
+
}
|
|
1611
|
+
|
|
1612
|
+
public void onDetachedFromWindow(RecyclerView view, Recycler recycler) {
|
|
1613
|
+
// Log.i(TAG,"onDetachedFromWindow view:"+ExtendUtil.debugViewLite(view));
|
|
1614
|
+
clearReFocus();
|
|
1615
|
+
}
|
|
1616
|
+
|
|
1617
|
+
|
|
1618
|
+
protected void handleFocusBeforeLayout(RecyclerView.Recycler recycler, RecyclerView.State state) {
|
|
1619
|
+
// if(boundView.getItemAnimator() != null && !state.isPreLayout()){
|
|
1620
|
+
// //有动画时,只在preLayout阶段处理 //fixme 这里夸克会有bug,暂时注掉
|
|
1621
|
+
// Log.w("ReFocus","handleFocusBeforeLayout state.isPreLayout true return");
|
|
1622
|
+
// return;
|
|
1623
|
+
// }
|
|
1624
|
+
if (LogUtils.isDebug()) {
|
|
1625
|
+
Log.i("ReFocus", "+++handleFocusBeforeLayout state:" + state + " ,hasFocus:" + boundView.hasFocus()+",refocusType:"+boundView.getRefocusType()+",this:"+ExtendUtil.debugViewLite(boundView));
|
|
1626
|
+
}
|
|
1627
|
+
|
|
1628
|
+
if (boundView.mOnLayoutListener != null) {
|
|
1629
|
+
boundView.mOnLayoutListener.onBeforeLayout(boundView, state);
|
|
1630
|
+
}
|
|
1631
|
+
if (enableReFocus) {
|
|
1632
|
+
if (boundView.initFocusPositionAfterLayout > -1) {
|
|
1633
|
+
if (LogUtils.isDebug()) {
|
|
1634
|
+
LogUtils.d("ReFocus", "handleFocusBeforeLayout initFocusPositionAfterLayout:" + boundView.initFocusPositionAfterLayout);
|
|
1635
|
+
}
|
|
1636
|
+
mReFocus = new ReFocus(boundView.initFocusPositionAfterLayout, null, null,null,null);
|
|
1637
|
+
boundView.initFocusPositionAfterLayout = -1;
|
|
1638
|
+
} else {
|
|
1639
|
+
final View child = boundView.getFocusedChild();
|
|
1640
|
+
final int focusPosition = boundView.mFocusChildPosition;
|
|
1641
|
+
|
|
1642
|
+
if (boundView.hasFocus() && child != null) {
|
|
1643
|
+
final View focused = child.findFocus();
|
|
1644
|
+
//上面判断一下类型,兼容一下旧版代码z2
|
|
1645
|
+
final int oldPos = focusPosition > -1 ? focusPosition : getPosition(child);
|
|
1646
|
+
// takeoverFocusIfNeed();
|
|
1647
|
+
// InternalExtendViewUtil.blockRootFocus(boundView);
|
|
1648
|
+
//2025 04 05 上面注掉,改由直接将全局的焦点锁定在当前view上,否则还是会有焦点丢失的问题
|
|
1649
|
+
InternalExtendViewUtil.blockRootFocus(boundView.getRootView());
|
|
1650
|
+
mReFocus = new ReFocus(oldPos,
|
|
1651
|
+
boundView.getRefocusType() == RefocusType.LEGACY ? focused : null, child,
|
|
1652
|
+
ExtendUtil.getViewSID(focused),ExtendUtil.getViewName(focused));
|
|
1653
|
+
if (LogUtils.isDebug()) {
|
|
1654
|
+
LogUtils.d("ReFocus", "+++handleFocusBeforeLayout mReFocus:" + mReFocus);
|
|
1655
|
+
}
|
|
1656
|
+
} else {
|
|
1657
|
+
if (!boundView.hasFocus() ) {
|
|
1658
|
+
//如果当前View没有焦点,刚
|
|
1659
|
+
if (LogUtils.isDebug()) {
|
|
1660
|
+
LogUtils.d("ReFocus", "handleFocusBeforeLayout no focus clear mReFocus hasFocus");
|
|
1661
|
+
}
|
|
1662
|
+
mReFocus = null;
|
|
1663
|
+
}else if(mReFocus != null){
|
|
1664
|
+
mReFocus = new ReFocus(mReFocus.oldPosition, null, child,mReFocus.oldFocusSid, mReFocus.oldName);
|
|
1665
|
+
}
|
|
1666
|
+
}
|
|
1667
|
+
}
|
|
1668
|
+
}//自动保存焦点
|
|
1669
|
+
// prepareAutoFocus();
|
|
1670
|
+
|
|
1671
|
+
}
|
|
1672
|
+
|
|
1673
|
+
protected void handleFocusAfterLayout(RecyclerView.State state) {
|
|
1674
|
+
if (LogUtils.isDebug()) {
|
|
1675
|
+
Log.i("ReFocus", "---handleFocusAfterLayout state:" + state + " ,hasFocus:" + boundView.hasFocus());
|
|
1676
|
+
}
|
|
1677
|
+
if (boundView != null) {
|
|
1678
|
+
boundView.onLayoutComplete(state);
|
|
1679
|
+
}
|
|
1680
|
+
// if(boundView != null && boundView.hasFocus()){
|
|
1681
|
+
// Log.w("ReFocus","return on hasFocus, no need to doReFocus "+mReFocus+",this:"+ExtendUtil.debugViewLite(boundView));
|
|
1682
|
+
// InternalExtendViewUtil.unBlockRootFocus(boundView.getRootView());
|
|
1683
|
+
// eatReFocus();
|
|
1684
|
+
// return;
|
|
1685
|
+
// }
|
|
1686
|
+
doReFocus();
|
|
1687
|
+
}
|
|
1688
|
+
|
|
1689
|
+
public int findFirstVisibleChild(boolean completelyVisible) {
|
|
1690
|
+
return mLayoutManagerCompat.findFirstVisibleChild(completelyVisible);
|
|
1691
|
+
}
|
|
1692
|
+
|
|
1693
|
+
void doReFocus() {
|
|
1694
|
+
if(LogUtils.isDebug()) {
|
|
1695
|
+
if(mReFocus != null) {
|
|
1696
|
+
Log.e("ReFocus", "doReFocus mReFocus:" + mReFocus + ",boundView:" + ExtendUtil.debugViewLite(boundView) + ",type:" + boundView.getRefocusType());
|
|
1697
|
+
}else{
|
|
1698
|
+
Log.d("ReFocus", "doReFocus mReFocus:" + null + ",boundView:" + ExtendUtil.debugViewLite(boundView) + ",type:" + boundView.getRefocusType());
|
|
1699
|
+
}
|
|
1700
|
+
}
|
|
1701
|
+
if (mReFocus != null && mReFocus.valid && !isInReFocus()) {
|
|
1702
|
+
//1. 尝试找到上次
|
|
1703
|
+
mReFocus.inReFocus = true;
|
|
1704
|
+
final RefocusType refocusType = boundView.getRefocusType();
|
|
1705
|
+
|
|
1706
|
+
final int oldPos = mReFocus.oldPosition;
|
|
1707
|
+
|
|
1708
|
+
View target = null;
|
|
1709
|
+
View child = null;
|
|
1710
|
+
|
|
1711
|
+
switch (refocusType) {
|
|
1712
|
+
case LEGACY:
|
|
1713
|
+
case KEEP_POSITION:
|
|
1714
|
+
target = findViewByPosition(oldPos);
|
|
1715
|
+
if(!InternalExtendViewUtil.testFocusable(target)){
|
|
1716
|
+
int keepPosition = findFocusableChildBackward(oldPos);
|
|
1717
|
+
target = findViewByPosition(keepPosition);
|
|
1718
|
+
if(LogUtils.isDebug()) {
|
|
1719
|
+
Log.d("ReFocus", "find backward, keepPosition:" + keepPosition + ",target:" + ExtendUtil.debugView(target));
|
|
1720
|
+
}
|
|
1721
|
+
}
|
|
1722
|
+
final View f = target;
|
|
1723
|
+
if ( f != null && !f.isFocused()) {
|
|
1724
|
+
final View oldFocused = mReFocus.oldFocus;
|
|
1725
|
+
child = f;
|
|
1726
|
+
target = f;
|
|
1727
|
+
if (f instanceof ViewGroup) {
|
|
1728
|
+
if (TVViewUtil.isViewDescendantOf(oldFocused, (ViewGroup) f) && oldFocused != f) {
|
|
1729
|
+
if (LogUtils.isDebug()) {
|
|
1730
|
+
LogUtils.d("ReFocus", "focus isViewDescendantOf child true");
|
|
1731
|
+
}
|
|
1732
|
+
target = oldFocused;
|
|
1733
|
+
}
|
|
1734
|
+
}
|
|
1735
|
+
if (LogUtils.isDebug()) {
|
|
1736
|
+
LogUtils.d("ReFocus", "---handleFocusAfterLayout exeRequestFocus oldFocusPos:" + oldPos + " target:" + target);
|
|
1737
|
+
LogUtils.d("PendingFocus", "---handleFocusAfterLayout exeRequestFocus oldFocusPos:" + oldPos + " target:" + target);
|
|
1738
|
+
}
|
|
1739
|
+
}
|
|
1740
|
+
break;
|
|
1741
|
+
case KEEP_SID:
|
|
1742
|
+
target = ExtendUtil.findViewBySID(mReFocus.oldFocusSid, boundView);
|
|
1743
|
+
break;
|
|
1744
|
+
case FIRST_VISIBLE:
|
|
1745
|
+
if(mReFocus.oldPosition > -1){
|
|
1746
|
+
target = findViewByPosition(mReFocus.oldPosition);
|
|
1747
|
+
Log.d("ReFocus", "FIRST_VISIBLE oldPosition:" + mReFocus.oldPosition + ",target:" + ExtendUtil.debugViewLite(target));
|
|
1748
|
+
}
|
|
1749
|
+
if(target == null) {
|
|
1750
|
+
int firstVisibleChild = findFirstVisibleChild(true);
|
|
1751
|
+
Log.d("ReFocus", "FIRST_VISIBLE firstVisibleChild:" + firstVisibleChild + ",mReFocus:" + mReFocus);
|
|
1752
|
+
target = findViewByPosition(firstVisibleChild);
|
|
1753
|
+
}
|
|
1754
|
+
break;
|
|
1755
|
+
case AT_START:
|
|
1756
|
+
if(mReFocus.oldPosition > -1){
|
|
1757
|
+
target = findViewByPosition(mReFocus.oldPosition);
|
|
1758
|
+
}
|
|
1759
|
+
if(target == null) {
|
|
1760
|
+
target = findViewByPosition(0);
|
|
1761
|
+
}
|
|
1762
|
+
break;
|
|
1763
|
+
default:
|
|
1764
|
+
break;
|
|
1765
|
+
}
|
|
1766
|
+
if (target != null) {
|
|
1767
|
+
if (LogUtils.isDebug()) {
|
|
1768
|
+
LogUtils.e(FocusDispatchView.TAG, "unBlockRootFocus 4 and requestFocus");
|
|
1769
|
+
}
|
|
1770
|
+
if(mReFocus.oldName != null){
|
|
1771
|
+
View viewByName = ExtendUtil.findViewByName(mReFocus.oldName, target);
|
|
1772
|
+
if(viewByName != null){
|
|
1773
|
+
Log.d("ReFocus","findViewByName target:"+ExtendUtil.debugView(target));
|
|
1774
|
+
target = viewByName;
|
|
1775
|
+
}
|
|
1776
|
+
}
|
|
1777
|
+
InternalExtendViewUtil.unBlockRootFocus(boundView.getRootView());
|
|
1778
|
+
callNotifyInReFocus(child != null ? child : target, true);
|
|
1779
|
+
target.requestFocus();
|
|
1780
|
+
callNotifyInReFocus(child != null ? child : target, false);
|
|
1781
|
+
}else{
|
|
1782
|
+
if (LogUtils.isDebug()) {
|
|
1783
|
+
LogUtils.d("ReFocus", "cant find oldFocus unBlockFocus");
|
|
1784
|
+
LogUtils.e(FocusDispatchView.TAG, "unBlockRootFocus 5 ");
|
|
1785
|
+
}
|
|
1786
|
+
if (mReFocus != null && mReFocus.valid) {
|
|
1787
|
+
if (LogUtils.isDebug()) {
|
|
1788
|
+
Log.d(FocusDispatchView.TAG, "postReFocus 5," + mReFocus);
|
|
1789
|
+
}
|
|
1790
|
+
// postReFocus();
|
|
1791
|
+
}
|
|
1792
|
+
InternalExtendViewUtil.unBlockRootFocus(boundView.getRootView());
|
|
1793
|
+
if (boundView.isFocused()) {
|
|
1794
|
+
if (LogUtils.isDebug()) {
|
|
1795
|
+
Log.i(FocusDispatchView.TAG, "---takeoverFocusIfNeed false recyclerView focused:" + boundView.isFocused() + ",this:" + boundView);
|
|
1796
|
+
}
|
|
1797
|
+
}
|
|
1798
|
+
// if (boundView.isFocusable()) {
|
|
1799
|
+
// boundView.setFocusable(false);
|
|
1800
|
+
// }
|
|
1801
|
+
}
|
|
1802
|
+
}else{
|
|
1803
|
+
if (LogUtils.isDebug()) {
|
|
1804
|
+
LogUtils.d("ReFocus", "doReFocus mReFocus null or invalid");
|
|
1805
|
+
}
|
|
1806
|
+
}
|
|
1807
|
+
eatReFocus();
|
|
1808
|
+
}
|
|
1809
|
+
|
|
1810
|
+
private void eatReFocus() {
|
|
1811
|
+
mReFocus = null;
|
|
1812
|
+
// boundView.invalidate();
|
|
1813
|
+
}
|
|
1814
|
+
|
|
1815
|
+
|
|
1816
|
+
public int findFocusableChildBackward(int pos) {
|
|
1817
|
+
View view = findViewByPosition(pos);
|
|
1818
|
+
if(InternalExtendViewUtil.testFocusable(view)){
|
|
1819
|
+
return pos;
|
|
1820
|
+
}
|
|
1821
|
+
for (int i = pos - 1; i >= 0; i--) {
|
|
1822
|
+
int result = findFocusableChildBackward(i);
|
|
1823
|
+
if (result != -1) {
|
|
1824
|
+
return result;
|
|
1825
|
+
}
|
|
1826
|
+
}
|
|
1827
|
+
return -1;
|
|
1828
|
+
}
|
|
1829
|
+
|
|
1830
|
+
public void clearReFocus() {
|
|
1831
|
+
this.mReFocus = null;
|
|
1832
|
+
}
|
|
1833
|
+
|
|
1834
|
+
void callNotifyInReFocus(View child, boolean inFocus) {
|
|
1835
|
+
if (child instanceof ITVView) {
|
|
1836
|
+
((ITVView) child).notifyInReFocus(inFocus);
|
|
1837
|
+
} else if (child instanceof RecyclerViewItem) {
|
|
1838
|
+
((RecyclerViewItem) child).notifyInReFocus(inFocus);
|
|
1839
|
+
}
|
|
1840
|
+
}
|
|
1841
|
+
|
|
1842
|
+
public void setPendingScroll(int pos, int offset) {
|
|
1843
|
+
if (mPendingWork == null) {
|
|
1844
|
+
mPendingWork = new PendingWork();
|
|
1845
|
+
}
|
|
1846
|
+
mPendingWork.position = pos;
|
|
1847
|
+
mPendingWork.offset = offset;
|
|
1848
|
+
}
|
|
1849
|
+
|
|
1850
|
+
public void layoutDecoratedWithMargins(@NonNull View child, int left, int top, int right, int bottom) {
|
|
1851
|
+
final int pos = getPosition(child);
|
|
1852
|
+
if (LogUtils.isDebug()) {
|
|
1853
|
+
Log.d(TAG, "layoutDecoratedWithMargins pos:" + pos + "view:" + child.getId() + ",parenID:" + boundView.getId() + ",defaultSectionPosition:" + boundView.defaultSectionPosition + ",hasCode:" + boundView.hashCode());
|
|
1854
|
+
if("WaterfallListView".equals(boundView.getClass().getSimpleName())) {
|
|
1855
|
+
Log.d(FocusDispatchView.TAG, "layoutDecoratedWithMargins pos:" + pos + "view:" + child.getId() + ",parenID:" + boundView.getId() + ",defaultSectionPosition:" + boundView.defaultSectionPosition + ",hasCode:" + boundView.hashCode());
|
|
1856
|
+
}
|
|
1857
|
+
}
|
|
1858
|
+
if (getItemCount() - 1 > 0) {
|
|
1859
|
+
if (pos + boundView.preloadItemNumber >= getItemCount() - 1) {
|
|
1860
|
+
|
|
1861
|
+
boundView.postDelayed(() -> {
|
|
1862
|
+
HippyMap map = new HippyMap();
|
|
1863
|
+
map.pushBoolean("isLastLine", true);
|
|
1864
|
+
map.pushInt("itemCount", getItemCount());
|
|
1865
|
+
map.pushInt("position", pos);
|
|
1866
|
+
if (boundView.mLoadMoreListener != null) {
|
|
1867
|
+
boundView.mLoadMoreListener.onLoadMore(pos, getItemCount());
|
|
1868
|
+
}
|
|
1869
|
+
if (boundView.getHandleEventNodeId() > -1) {
|
|
1870
|
+
boundView.getEventDeliverer().sendEvent("onLoadMore", boundView.getHandleEventNodeId(), map);
|
|
1871
|
+
} else {
|
|
1872
|
+
boundView.getEventDeliverer().sendEvent("onLoadMore", mAdapter.getRootListNodeID(), map);
|
|
1873
|
+
}
|
|
1874
|
+
}, boundView.loadDelayTime);
|
|
1875
|
+
}
|
|
1876
|
+
}
|
|
1877
|
+
if (boundView.defaultSectionPosition == pos && pos > -1) {
|
|
1878
|
+
if (LogUtils.isDebug()) {
|
|
1879
|
+
Log.i(TAG, "layoutDecoratedWithMargins change defaultSectionPosition pos:" + pos + "view:" + child.getId() + ",parenID:" + boundView.getId());
|
|
1880
|
+
}
|
|
1881
|
+
boundView.changeSelectState(child, true);
|
|
1882
|
+
} else {
|
|
1883
|
+
boundView.changeSelectState(child, false);
|
|
1884
|
+
}
|
|
1885
|
+
if (boundView.layoutTriggerTargetPosition > -1) {
|
|
1886
|
+
if (boundView.layoutTriggerTargetPosition == pos) {
|
|
1887
|
+
TriggerTaskManagerModule.dispatchTriggerTask(boundView, "onTargetChildLayout");
|
|
1888
|
+
}
|
|
1889
|
+
}
|
|
1890
|
+
}
|
|
1891
|
+
|
|
1892
|
+
public void handleScrollValue(int vector, int sy) {
|
|
1893
|
+
getChildOnScreenScroller().notifyOnScroll(boundView, vector, 0, sy);
|
|
1894
|
+
}
|
|
1895
|
+
|
|
1896
|
+
public void setNoScrollOnFirstScreen(boolean enable) {
|
|
1897
|
+
final ChildOnScreenScroller scroller = getChildOnScreenScroller();
|
|
1898
|
+
if (scroller != null) {
|
|
1899
|
+
scroller.setNoScrollOnFirstScreen(enable);
|
|
1900
|
+
}
|
|
1901
|
+
}
|
|
1902
|
+
|
|
1903
|
+
private ChildOnScreenScroller getChildOnScreenScroller() {
|
|
1904
|
+
return boundView.mCustomChildOnScreenScroller != null ? boundView.mCustomChildOnScreenScroller : mGridChildOnScreenScroller;
|
|
1905
|
+
}
|
|
1906
|
+
}
|
|
1907
|
+
|
|
1908
|
+
protected int getFirstFocusChildPosition(int direction) {
|
|
1909
|
+
return -1;
|
|
1910
|
+
}
|
|
1911
|
+
|
|
1912
|
+
protected View onInterceptFocusSearchFailed(View focused, int direction) {
|
|
1913
|
+
return null;
|
|
1914
|
+
}
|
|
1915
|
+
|
|
1916
|
+
public void setScrollEnable(boolean enable) {
|
|
1917
|
+
touchScrollEnabled = enable;
|
|
1918
|
+
getLayoutExecutor().getChildOnScreenScroller().setEnableScroll(enable);
|
|
1919
|
+
}
|
|
1920
|
+
|
|
1921
|
+
public void setTouchScrollEnable(boolean enable) {
|
|
1922
|
+
touchScrollEnabled = enable;
|
|
1923
|
+
}
|
|
1924
|
+
|
|
1925
|
+
@Override
|
|
1926
|
+
public boolean onTouchEvent(MotionEvent motionEvent) {
|
|
1927
|
+
if (!touchScrollEnabled) {
|
|
1928
|
+
// Log.i("onTouchEvent","onTouchEvent return on !mScrollEnable this:"+this);
|
|
1929
|
+
return false;
|
|
1930
|
+
}
|
|
1931
|
+
// Log.i("onTouchEvent","onTouchEvent x : "+motionEvent.getX()+",y:"+motionEvent.getY()+",this:"+this+",return b:"+b);
|
|
1932
|
+
return super.onTouchEvent(motionEvent);
|
|
1933
|
+
}
|
|
1934
|
+
|
|
1935
|
+
@Override
|
|
1936
|
+
public boolean onInterceptTouchEvent(MotionEvent motionEvent) {
|
|
1937
|
+
if (!touchScrollEnabled) {
|
|
1938
|
+
// Log.i("onInterceptTouchEvent","onTouchEvent return on !mScrollEnable this:"+this);
|
|
1939
|
+
return false;
|
|
1940
|
+
}
|
|
1941
|
+
return super.onInterceptTouchEvent(motionEvent);
|
|
1942
|
+
}
|
|
1943
|
+
|
|
1944
|
+
@Override
|
|
1945
|
+
public boolean dispatchTouchEvent(MotionEvent ev) {
|
|
1946
|
+
return super.dispatchTouchEvent(ev);
|
|
1947
|
+
}
|
|
1948
|
+
|
|
1949
|
+
public class MyGridLayoutManager extends GridLayoutManager implements LayoutManagerCompat {
|
|
1950
|
+
LayoutManagerExecutor mExecutor;
|
|
1951
|
+
long lastDownTime = 0;
|
|
1952
|
+
|
|
1953
|
+
@Override
|
|
1954
|
+
public LayoutManagerExecutor getExecutor() {
|
|
1955
|
+
return mExecutor;
|
|
1956
|
+
}
|
|
1957
|
+
|
|
1958
|
+
@Override
|
|
1959
|
+
public void setNoScrollOnFirstScreen(boolean b) {
|
|
1960
|
+
mExecutor.setNoScrollOnFirstScreen(b);
|
|
1961
|
+
}
|
|
1962
|
+
|
|
1963
|
+
@Override
|
|
1964
|
+
public void setSearchFocusInItem(boolean b) {
|
|
1965
|
+
mExecutor.setSearchFocusInItem(b);
|
|
1966
|
+
}
|
|
1967
|
+
|
|
1968
|
+
@Override
|
|
1969
|
+
public void setFocusEventListener(FocusEventListener eventListener) {
|
|
1970
|
+
mExecutor.setFocusEventListener(eventListener);
|
|
1971
|
+
}
|
|
1972
|
+
|
|
1973
|
+
@Override
|
|
1974
|
+
public View findFirstFocusByDirection(int direction) {
|
|
1975
|
+
if (direction == View.FOCUS_DOWN) {
|
|
1976
|
+
return findViewByPosition(mExecutor.getFirstFocusChildPosition(direction));
|
|
1977
|
+
}
|
|
1978
|
+
return null;
|
|
1979
|
+
}
|
|
1980
|
+
|
|
1981
|
+
@Override
|
|
1982
|
+
public int findFirstVisibleChild(boolean completelyVisible) {
|
|
1983
|
+
return completelyVisible ? findFirstCompletelyVisibleItemPosition() : findFirstVisibleItemPosition();
|
|
1984
|
+
}
|
|
1985
|
+
|
|
1986
|
+
@Override
|
|
1987
|
+
public void superSoothScrollToPosition(RecyclerView recyclerView, State state, int position) {
|
|
1988
|
+
super.smoothScrollToPosition(recyclerView, state, position);
|
|
1989
|
+
}
|
|
1990
|
+
|
|
1991
|
+
@Override
|
|
1992
|
+
public void superScrollToPosition(int position) {
|
|
1993
|
+
super.scrollToPosition(position);
|
|
1994
|
+
}
|
|
1995
|
+
|
|
1996
|
+
@Override
|
|
1997
|
+
public void superScrollToPositionWithOffset(int position, int offset) {
|
|
1998
|
+
super.scrollToPositionWithOffset(position, offset);
|
|
1999
|
+
}
|
|
2000
|
+
|
|
2001
|
+
@Override
|
|
2002
|
+
public void superStartSmoothScroll(SmoothScroller ss) {
|
|
2003
|
+
super.startSmoothScroll(ss);
|
|
2004
|
+
}
|
|
2005
|
+
|
|
2006
|
+
@Override
|
|
2007
|
+
public void setPendingScroll(int scrollToPosition, int scrollOffset) {
|
|
2008
|
+
mExecutor.setPendingScroll(scrollOffset, scrollOffset);
|
|
2009
|
+
}
|
|
2010
|
+
|
|
2011
|
+
@Override
|
|
2012
|
+
public boolean isGridLayout() {
|
|
2013
|
+
return true;
|
|
2014
|
+
}
|
|
2015
|
+
|
|
2016
|
+
public MyGridLayoutManager(TVListView tvListView, Context context, int spanCount, int orientation, boolean reverseLayout, FastAdapter adapter) {
|
|
2017
|
+
super(context, spanCount, orientation, reverseLayout);
|
|
2018
|
+
mExecutor = new LayoutManagerExecutor(tvListView, spanCount, orientation, this, adapter);
|
|
2019
|
+
}
|
|
2020
|
+
|
|
2021
|
+
@Override
|
|
2022
|
+
public boolean requestChildRectangleOnScreen(@NonNull RecyclerView parent, @NonNull View child, @NonNull Rect rect, boolean immediate, boolean focusedChildVisible) {
|
|
2023
|
+
return mExecutor.requestChildRectangleOnScreen(parent, child, rect, immediate, focusedChildVisible) || super.requestChildRectangleOnScreen(parent, child, rect, immediate, focusedChildVisible);
|
|
2024
|
+
}
|
|
2025
|
+
|
|
2026
|
+
@Override
|
|
2027
|
+
public void onAdapterChanged(@Nullable Adapter oldAdapter, @Nullable Adapter newAdapter) {
|
|
2028
|
+
super.onAdapterChanged(oldAdapter, newAdapter);
|
|
2029
|
+
mExecutor.onAdapterChanged(oldAdapter, newAdapter);
|
|
2030
|
+
}
|
|
2031
|
+
|
|
2032
|
+
@Nullable
|
|
2033
|
+
@Override
|
|
2034
|
+
public View onInterceptFocusSearch(@NonNull View focused, int direction) {
|
|
2035
|
+
final View v = mExecutor.onInterceptFocusSearch(focused, direction);
|
|
2036
|
+
return v != null ? v : super.onInterceptFocusSearch(focused, direction);
|
|
2037
|
+
}
|
|
2038
|
+
|
|
2039
|
+
ArrayList<View> tempList = new ArrayList<>();
|
|
2040
|
+
|
|
2041
|
+
//Grid模式寻焦处理
|
|
2042
|
+
@Override
|
|
2043
|
+
public View onInterceptSearchInside(TVListView tvList, int focusPosition, int vector, @NonNull View focused, int direction) {
|
|
2044
|
+
View result = null;
|
|
2045
|
+
final int itemCount = getItemCount();
|
|
2046
|
+
final int childCount = tvList.getChildCount();
|
|
2047
|
+
if (focusPosition > -1 && focusPosition < itemCount) {
|
|
2048
|
+
View[] targets = new View[childCount];
|
|
2049
|
+
for (int i = 0; i < childCount; i++) {
|
|
2050
|
+
targets[i] = tvList.getChildAt(i);
|
|
2051
|
+
}
|
|
2052
|
+
if(TVViewUtil.getVectorByDirection(direction,getOrientation()) == 0) {
|
|
2053
|
+
View focusedChild = getFocusedChild();
|
|
2054
|
+
if (focusedChild != null) {
|
|
2055
|
+
Utils.findSameRowChildrenInGridLayout(targets, focusedChild, tempList, 2, getOrientation() == HORIZONTAL);
|
|
2056
|
+
if (!tempList.isEmpty()) {
|
|
2057
|
+
targets = new View[tempList.size()];
|
|
2058
|
+
for (int i = 0; i < tempList.size(); i++) {
|
|
2059
|
+
targets[i] = tempList.get(i);
|
|
2060
|
+
// Log.i("ZHAOPENG","findSameRowChildrenInGridLayout targets:" + ExtendUtil.debugViewLite(targets[i]) );
|
|
2061
|
+
}
|
|
2062
|
+
tempList.clear();
|
|
2063
|
+
} else {
|
|
2064
|
+
// targets = new View[0];
|
|
2065
|
+
}
|
|
2066
|
+
}
|
|
2067
|
+
}
|
|
2068
|
+
|
|
2069
|
+
result = tvList.searchInTargets(targets, focused, direction);
|
|
2070
|
+
if (LogUtils.isDebug()) {
|
|
2071
|
+
LogUtils.d(FocusDispatchView.TAG, "onSearchInside result 1:" + result + ",this ID :" + tvList.getId());
|
|
2072
|
+
}
|
|
2073
|
+
|
|
2074
|
+
long now = SystemClock.uptimeMillis();
|
|
2075
|
+
long diff = now - lastDownTime;
|
|
2076
|
+
boolean returnOnToFast = diff < 100;
|
|
2077
|
+
// boolean returnOnToFast = false;
|
|
2078
|
+
if (!returnOnToFast) {
|
|
2079
|
+
lastDownTime = now;
|
|
2080
|
+
}
|
|
2081
|
+
if (LogUtils.isDebug()) {
|
|
2082
|
+
Log.v(FocusDispatchView.TAG, "onInterceptFocusSearch diff " + diff + ",returnOnToFast : " + returnOnToFast);
|
|
2083
|
+
}
|
|
2084
|
+
if (returnOnToFast && result == null) {
|
|
2085
|
+
if (LogUtils.isDebug()) {
|
|
2086
|
+
LogUtils.e(FocusDispatchView.TAG, "onInterceptFocusSearch return focused on RecyclerView inside focusPosition:" + focusPosition + ",total:" + itemCount + ",this ID :" + tvList.getId());
|
|
2087
|
+
}
|
|
2088
|
+
return focused;
|
|
2089
|
+
} else if (result == null && getItemCount() > 0) {
|
|
2090
|
+
//zhaopeng 20230107,简单的防止按键过快时焦点跳出
|
|
2091
|
+
int vectorNormal = FocusUtils.getVectorByDirection(direction, tvList.getOrientation());
|
|
2092
|
+
int target = focusPosition + getSpanCount() * vectorNormal;
|
|
2093
|
+
if (vectorNormal < 0) {
|
|
2094
|
+
if (target > 0) {
|
|
2095
|
+
Log.e(FocusDispatchView.TAG, "return on grid target " + target + ",itemCount:" + itemCount);
|
|
2096
|
+
return focused;
|
|
2097
|
+
}
|
|
2098
|
+
} else if (vectorNormal > 0) {
|
|
2099
|
+
if (target < getItemCount() - 1) {
|
|
2100
|
+
Log.e(FocusDispatchView.TAG, "return on grid target " + target + ",itemCount:" + itemCount);
|
|
2101
|
+
return focused;
|
|
2102
|
+
}
|
|
2103
|
+
}
|
|
2104
|
+
}
|
|
2105
|
+
} else {
|
|
2106
|
+
if (LogUtils.isDebug()) {
|
|
2107
|
+
LogUtils.e(FocusDispatchView.TAG, "onInterceptFocusSearch fail return super focusPosition:" + focusPosition + ",this ID :" + tvList.getId());
|
|
2108
|
+
}
|
|
2109
|
+
}
|
|
2110
|
+
return result;
|
|
2111
|
+
}
|
|
2112
|
+
|
|
2113
|
+
@Override
|
|
2114
|
+
public View onFocusSearchFailed(View focused, int focusDirection, RecyclerView.Recycler recycler, RecyclerView.State state) {
|
|
2115
|
+
if (LogUtils.isDebug()) {
|
|
2116
|
+
LogUtils.e(FocusDispatchView.TAG, "----onFocusSearchFailed start");
|
|
2117
|
+
}
|
|
2118
|
+
return mExecutor.onFocusSearchFailed(focused, focusDirection, recycler, state);
|
|
2119
|
+
}
|
|
2120
|
+
|
|
2121
|
+
@Override
|
|
2122
|
+
public void onLayoutCompleted(State state) {
|
|
2123
|
+
super.onLayoutCompleted(state);
|
|
2124
|
+
mExecutor.onLayoutCompleted(state);
|
|
2125
|
+
}
|
|
2126
|
+
|
|
2127
|
+
@Override
|
|
2128
|
+
public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) {
|
|
2129
|
+
mExecutor.onLayoutChildren(recycler, state);
|
|
2130
|
+
super.onLayoutChildren(recycler, state);
|
|
2131
|
+
}
|
|
2132
|
+
|
|
2133
|
+
@Override
|
|
2134
|
+
public void onDetachedFromWindow(RecyclerView view, Recycler recycler) {
|
|
2135
|
+
super.onDetachedFromWindow(view, recycler);
|
|
2136
|
+
mExecutor.onDetachedFromWindow(view, recycler);
|
|
2137
|
+
}
|
|
2138
|
+
|
|
2139
|
+
@Override
|
|
2140
|
+
public View superFocusSearchFailed(View focused, int focusDirection, Recycler recycler, State state) {
|
|
2141
|
+
return super.onFocusSearchFailed(focused, focusDirection, recycler, state);
|
|
2142
|
+
}
|
|
2143
|
+
|
|
2144
|
+
@Override
|
|
2145
|
+
public LayoutManager getRealLayout() {
|
|
2146
|
+
return this;
|
|
2147
|
+
}
|
|
2148
|
+
|
|
2149
|
+
@Override
|
|
2150
|
+
public int getVectorByDirection(int direction, int spanCount, int pos) {
|
|
2151
|
+
return this.getGridVectorByDirection(direction, spanCount, pos);
|
|
2152
|
+
}
|
|
2153
|
+
|
|
2154
|
+
@Override
|
|
2155
|
+
public void startSmoothScroll(SmoothScroller smoothScroller) {
|
|
2156
|
+
mExecutor.startSmoothScroll(smoothScroller);
|
|
2157
|
+
}
|
|
2158
|
+
|
|
2159
|
+
private int getGridVectorByDirection(int direction, int spanCount, int pos) {
|
|
2160
|
+
int vector = 0;
|
|
2161
|
+
boolean hasHeader = this.mExecutor.mAdapter.getItemViewType(0) == FastAdapter.TYPE_HEADER;
|
|
2162
|
+
int lastVisibleItemPosition = ((LinearLayoutManager) mExecutor.mLayoutManagerCompat.getRealLayout()).findLastVisibleItemPosition();
|
|
2163
|
+
int isHeaderCount = hasHeader ? 0 : 1;//有头部 pos判断是否第一行时不需要-1 没有头部 pos判断是否第一行时需要-1
|
|
2164
|
+
if (direction == FOCUS_UP) {
|
|
2165
|
+
if (pos <= spanCount - isHeaderCount) {
|
|
2166
|
+
vector = -1;
|
|
2167
|
+
} else {
|
|
2168
|
+
vector = vector - spanCount;
|
|
2169
|
+
}
|
|
2170
|
+
} else if (direction == FOCUS_DOWN) {
|
|
2171
|
+
if (hasHeader && pos == 0) {
|
|
2172
|
+
vector = 1;
|
|
2173
|
+
} else {
|
|
2174
|
+
vector = vector + spanCount;
|
|
2175
|
+
if (vector + pos >= lastVisibleItemPosition) {
|
|
2176
|
+
vector = 1;
|
|
2177
|
+
}
|
|
2178
|
+
}
|
|
2179
|
+
} else if (direction == FOCUS_LEFT) {
|
|
2180
|
+
vector = -1;
|
|
2181
|
+
} else if (direction == FOCUS_RIGHT) {
|
|
2182
|
+
vector = 1;
|
|
2183
|
+
}
|
|
2184
|
+
return vector;
|
|
2185
|
+
}
|
|
2186
|
+
|
|
2187
|
+
@Override
|
|
2188
|
+
public void layoutDecoratedWithMargins(@NonNull View child, int left, int top, int right, int bottom) {
|
|
2189
|
+
super.layoutDecoratedWithMargins(child, left, top, right, bottom);
|
|
2190
|
+
mExecutor.layoutDecoratedWithMargins(child, left, top, right, bottom);
|
|
2191
|
+
}
|
|
2192
|
+
}
|
|
2193
|
+
|
|
2194
|
+
/**
|
|
2195
|
+
* 对外替代LayoutManager的接口类
|
|
2196
|
+
*/
|
|
2197
|
+
public interface LayoutManagerCompat {
|
|
2198
|
+
View superFocusSearchFailed(View focused, int focusDirection, RecyclerView.Recycler recycler, RecyclerView.State state);
|
|
2199
|
+
|
|
2200
|
+
LayoutManager getRealLayout();
|
|
2201
|
+
|
|
2202
|
+
boolean isGridLayout();
|
|
2203
|
+
|
|
2204
|
+
int getVectorByDirection(int direction, int spanCount, int pos);
|
|
2205
|
+
|
|
2206
|
+
LayoutManagerExecutor getExecutor();
|
|
2207
|
+
|
|
2208
|
+
View findViewByPosition(int position);
|
|
2209
|
+
|
|
2210
|
+
View onInterceptSearchInside(TVListView recyclerView, int focusPosition, int vector, @NonNull View focused, int direction);
|
|
2211
|
+
|
|
2212
|
+
int getOrientation();
|
|
2213
|
+
|
|
2214
|
+
void superSoothScrollToPosition(RecyclerView recyclerView, State state, int position);
|
|
2215
|
+
|
|
2216
|
+
void superScrollToPosition(int position);
|
|
2217
|
+
|
|
2218
|
+
void superScrollToPositionWithOffset(int position, int offset);
|
|
2219
|
+
|
|
2220
|
+
void superStartSmoothScroll(SmoothScroller ss);
|
|
2221
|
+
|
|
2222
|
+
|
|
2223
|
+
void scrollToPositionWithOffset(int yIndex, int offset);
|
|
2224
|
+
|
|
2225
|
+
int getPosition(View child);
|
|
2226
|
+
|
|
2227
|
+
void setPendingScroll(int scrollToPosition, int scrollOffset);
|
|
2228
|
+
|
|
2229
|
+
void startSmoothScroll(SmoothScroller ss);
|
|
2230
|
+
|
|
2231
|
+
void setNoScrollOnFirstScreen(boolean b);
|
|
2232
|
+
|
|
2233
|
+
void setSearchFocusInItem(boolean b);
|
|
2234
|
+
|
|
2235
|
+
void setFocusEventListener(FocusEventListener eventListener);
|
|
2236
|
+
|
|
2237
|
+
View findFirstFocusByDirection(int direction);
|
|
2238
|
+
|
|
2239
|
+
int findFirstVisibleChild(boolean completelyVisible);
|
|
2240
|
+
}
|
|
2241
|
+
|
|
2242
|
+
public static class MyLinearLayoutManager extends LinearLayoutManager implements LayoutManagerCompat {
|
|
2243
|
+
|
|
2244
|
+
|
|
2245
|
+
@Override
|
|
2246
|
+
public void superSoothScrollToPosition(RecyclerView recyclerView, State state, int position) {
|
|
2247
|
+
super.smoothScrollToPosition(recyclerView, state, position);
|
|
2248
|
+
}
|
|
2249
|
+
|
|
2250
|
+
@Override
|
|
2251
|
+
public void superScrollToPositionWithOffset(int position, int offset) {
|
|
2252
|
+
super.scrollToPositionWithOffset(position, offset);
|
|
2253
|
+
}
|
|
2254
|
+
|
|
2255
|
+
@Override
|
|
2256
|
+
public void superStartSmoothScroll(SmoothScroller ss) {
|
|
2257
|
+
super.startSmoothScroll(ss);
|
|
2258
|
+
}
|
|
2259
|
+
|
|
2260
|
+
@Override
|
|
2261
|
+
public void superScrollToPosition(int position) {
|
|
2262
|
+
super.scrollToPosition(position);
|
|
2263
|
+
}
|
|
2264
|
+
|
|
2265
|
+
@Override
|
|
2266
|
+
public LayoutManagerExecutor getExecutor() {
|
|
2267
|
+
return mExecutor;
|
|
2268
|
+
}
|
|
2269
|
+
|
|
2270
|
+
private LayoutManagerExecutor mExecutor;
|
|
2271
|
+
|
|
2272
|
+
|
|
2273
|
+
@Override
|
|
2274
|
+
public View findFirstFocusByDirection(int direction) {
|
|
2275
|
+
if (direction == View.FOCUS_DOWN || direction == View.FOCUS_UP) {
|
|
2276
|
+
return findViewByPosition(mExecutor.getFirstFocusChildPosition(direction));
|
|
2277
|
+
}
|
|
2278
|
+
return null;
|
|
2279
|
+
}
|
|
2280
|
+
|
|
2281
|
+
@Override
|
|
2282
|
+
public int findFirstVisibleChild(boolean completelyVisible) {
|
|
2283
|
+
return completelyVisible ? findFirstCompletelyVisibleItemPosition() : findFirstVisibleItemPosition();
|
|
2284
|
+
}
|
|
2285
|
+
|
|
2286
|
+
@Override
|
|
2287
|
+
public void startSmoothScroll(SmoothScroller smoothScroller) {
|
|
2288
|
+
mExecutor.startSmoothScroll(smoothScroller);
|
|
2289
|
+
}
|
|
2290
|
+
|
|
2291
|
+
public void setPendingScroll(int pos, int offset) {
|
|
2292
|
+
mExecutor.setPendingScroll(pos, offset);
|
|
2293
|
+
}
|
|
2294
|
+
|
|
2295
|
+
@Override
|
|
2296
|
+
public void setNoScrollOnFirstScreen(boolean b) {
|
|
2297
|
+
mExecutor.setNoScrollOnFirstScreen(b);
|
|
2298
|
+
}
|
|
2299
|
+
|
|
2300
|
+
@Override
|
|
2301
|
+
public void setSearchFocusInItem(boolean b) {
|
|
2302
|
+
mExecutor.setSearchFocusInItem(b);
|
|
2303
|
+
}
|
|
2304
|
+
|
|
2305
|
+
@Override
|
|
2306
|
+
public void setFocusEventListener(FocusEventListener eventListener) {
|
|
2307
|
+
mExecutor.setFocusEventListener(eventListener);
|
|
2308
|
+
}
|
|
2309
|
+
|
|
2310
|
+
@Override
|
|
2311
|
+
public boolean requestChildRectangleOnScreen(@NonNull RecyclerView parent, @NonNull View child, @NonNull Rect rect, boolean immediate, boolean focusedChildVisible) {
|
|
2312
|
+
return mExecutor.requestChildRectangleOnScreen(parent, child, rect, immediate, focusedChildVisible) || super.requestChildRectangleOnScreen(parent, child, rect, immediate, focusedChildVisible);
|
|
2313
|
+
}
|
|
2314
|
+
|
|
2315
|
+
|
|
2316
|
+
@Override
|
|
2317
|
+
public void onAdapterChanged(@Nullable Adapter oldAdapter, @Nullable Adapter newAdapter) {
|
|
2318
|
+
super.onAdapterChanged(oldAdapter, newAdapter);
|
|
2319
|
+
mExecutor.onAdapterChanged(oldAdapter, newAdapter);
|
|
2320
|
+
}
|
|
2321
|
+
|
|
2322
|
+
@Nullable
|
|
2323
|
+
@Override
|
|
2324
|
+
public View onInterceptFocusSearch(@NonNull View focused, int direction) {
|
|
2325
|
+
final View v = mExecutor.onInterceptFocusSearch(focused, direction);
|
|
2326
|
+
return v != null ? v : super.onInterceptFocusSearch(focused, direction);
|
|
2327
|
+
}
|
|
2328
|
+
|
|
2329
|
+
long lastDownTime = 0;
|
|
2330
|
+
|
|
2331
|
+
//linear
|
|
2332
|
+
@Override
|
|
2333
|
+
public View onInterceptSearchInside(TVListView tvList, int focusPosition, int vector, @NonNull View focused, int direction) {
|
|
2334
|
+
View result = null;
|
|
2335
|
+
int targetPosition = focusPosition + vector;
|
|
2336
|
+
final int itemCount = getItemCount();
|
|
2337
|
+
if (focusPosition > -1 && focusPosition < itemCount) {
|
|
2338
|
+
View current = findViewByPosition(focusPosition);
|
|
2339
|
+
View next = findViewByPosition(targetPosition);
|
|
2340
|
+
// if (next != null) {
|
|
2341
|
+
// View firstChild = getExecutor().boundView.getFirstFocusHelper().findFirstFocusChildByDirection(direction);
|
|
2342
|
+
// }
|
|
2343
|
+
if (current != null) {
|
|
2344
|
+
View[] targets = new View[next == null ? 1 : 2];
|
|
2345
|
+
targets[0] = current;
|
|
2346
|
+
if (next != null) {
|
|
2347
|
+
targets[1] = next;
|
|
2348
|
+
}
|
|
2349
|
+
result = tvList.searchInTargets(targets, focused, direction);
|
|
2350
|
+
if (LogUtils.isDebug()) {
|
|
2351
|
+
LogUtils.d(FocusDispatchView.TAG, "onSearchInside result 1:" + result + ",this ID :" + tvList.getId());
|
|
2352
|
+
}
|
|
2353
|
+
}
|
|
2354
|
+
int nextFocusPos = targetPosition;
|
|
2355
|
+
if (result == null && tvList.advancedFocusSearchMore > 0) {
|
|
2356
|
+
for (int i = 0; i < tvList.advancedFocusSearchMore; i++) {
|
|
2357
|
+
nextFocusPos = targetPosition + ((1 + i) * vector);
|
|
2358
|
+
if (nextFocusPos > itemCount - 1 || nextFocusPos < 0) {
|
|
2359
|
+
break;
|
|
2360
|
+
}
|
|
2361
|
+
View nextFocus = findViewByPosition(nextFocusPos);
|
|
2362
|
+
if (current != null) {
|
|
2363
|
+
View[] targets = new View[nextFocus == null ? 1 : 2];
|
|
2364
|
+
targets[0] = current;
|
|
2365
|
+
if (nextFocus != null) {
|
|
2366
|
+
targets[1] = nextFocus;
|
|
2367
|
+
}
|
|
2368
|
+
result = tvList.searchInTargets(targets, focused, direction);
|
|
2369
|
+
|
|
2370
|
+
if (LogUtils.isDebug()) {
|
|
2371
|
+
LogUtils.d(FocusDispatchView.TAG, "onInterceptFocusSearch result from nextFocusPos:" + nextFocusPos + ",current:" + focusPosition + ",result:" + result + ",this ID :" + tvList.getId());
|
|
2372
|
+
}
|
|
2373
|
+
if (result != null) {
|
|
2374
|
+
break;
|
|
2375
|
+
}
|
|
2376
|
+
}
|
|
2377
|
+
}
|
|
2378
|
+
}
|
|
2379
|
+
long now = SystemClock.uptimeMillis();
|
|
2380
|
+
long diff = now - lastDownTime;
|
|
2381
|
+
boolean returnOnToFast = diff < 400;
|
|
2382
|
+
if (!returnOnToFast) {
|
|
2383
|
+
lastDownTime = now;
|
|
2384
|
+
}
|
|
2385
|
+
if (LogUtils.isDebug()) {
|
|
2386
|
+
Log.v(FocusDispatchView.TAG, "onInterceptFocusSearch diff " + diff + ",returnOnToFast : " + returnOnToFast);
|
|
2387
|
+
}
|
|
2388
|
+
if (returnOnToFast && result == null && nextFocusPos > -1 && nextFocusPos < itemCount - 1) {
|
|
2389
|
+
if (LogUtils.isDebug()) {
|
|
2390
|
+
LogUtils.e(FocusDispatchView.TAG, "onInterceptFocusSearch return focused on RecyclerView inside focusPosition:" + focusPosition + ",total:" + itemCount + ",this ID :" + tvList.getId());
|
|
2391
|
+
LogUtils.e(FocusDispatchView.TAG, "onInterceptFocusSearch return focused 可以通过设置advancedFocusSearchSpan=n 来扩大搜索跨度,或者通过将useAdvancedFocusSearch=false,将高级搜索取消");
|
|
2392
|
+
}
|
|
2393
|
+
return focused;
|
|
2394
|
+
}
|
|
2395
|
+
} else {
|
|
2396
|
+
if (LogUtils.isDebug()) {
|
|
2397
|
+
LogUtils.e(FocusDispatchView.TAG, "onInterceptFocusSearch fail return super focusPosition:" + focusPosition + ",this ID :" + tvList.getId());
|
|
2398
|
+
}
|
|
2399
|
+
|
|
2400
|
+
}
|
|
2401
|
+
return result;
|
|
2402
|
+
}
|
|
2403
|
+
|
|
2404
|
+
@Override
|
|
2405
|
+
public View onFocusSearchFailed(View focused, int focusDirection, RecyclerView.Recycler recycler, RecyclerView.State state) {
|
|
2406
|
+
return mExecutor.onFocusSearchFailed(focused, focusDirection, recycler, state);
|
|
2407
|
+
}
|
|
2408
|
+
|
|
2409
|
+
@Override
|
|
2410
|
+
public void onLayoutCompleted(State state) {
|
|
2411
|
+
super.onLayoutCompleted(state);
|
|
2412
|
+
mExecutor.onLayoutCompleted(state);
|
|
2413
|
+
}
|
|
2414
|
+
|
|
2415
|
+
@Override
|
|
2416
|
+
public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) {
|
|
2417
|
+
mExecutor.onLayoutChildren(recycler, state);
|
|
2418
|
+
super.onLayoutChildren(recycler, state);
|
|
2419
|
+
}
|
|
2420
|
+
|
|
2421
|
+
|
|
2422
|
+
@Override
|
|
2423
|
+
public void onDetachedFromWindow(RecyclerView view, Recycler recycler) {
|
|
2424
|
+
super.onDetachedFromWindow(view, recycler);
|
|
2425
|
+
mExecutor.onDetachedFromWindow(view, recycler);
|
|
2426
|
+
}
|
|
2427
|
+
|
|
2428
|
+
@Override
|
|
2429
|
+
public View superFocusSearchFailed(View focused, int focusDirection, Recycler recycler, State state) {
|
|
2430
|
+
return super.onFocusSearchFailed(focused, focusDirection, recycler, state);
|
|
2431
|
+
}
|
|
2432
|
+
|
|
2433
|
+
|
|
2434
|
+
@Override
|
|
2435
|
+
public boolean isGridLayout() {
|
|
2436
|
+
return false;
|
|
2437
|
+
}
|
|
2438
|
+
|
|
2439
|
+
|
|
2440
|
+
@Override
|
|
2441
|
+
public void smoothScrollToPosition(RecyclerView recyclerView, State state, int position) {
|
|
2442
|
+
mExecutor.smoothScrollToPosition(recyclerView, state, position);
|
|
2443
|
+
}
|
|
2444
|
+
|
|
2445
|
+
@Override
|
|
2446
|
+
public void scrollToPositionWithOffset(int position, int offset) {
|
|
2447
|
+
mExecutor.scrollToPositionWithOffset(position, offset);
|
|
2448
|
+
}
|
|
2449
|
+
|
|
2450
|
+
public MyLinearLayoutManager(final TVListView mRecyclerView, int orientation, FastAdapter adapter) {
|
|
2451
|
+
super(mRecyclerView.getContext(), orientation, false);
|
|
2452
|
+
mExecutor = new LayoutManagerExecutor(mRecyclerView, 1, orientation, this, adapter);
|
|
2453
|
+
}
|
|
2454
|
+
|
|
2455
|
+
@Override
|
|
2456
|
+
public void scrollToPosition(int position) {
|
|
2457
|
+
mExecutor.scrollToPosition(position);
|
|
2458
|
+
}
|
|
2459
|
+
|
|
2460
|
+
|
|
2461
|
+
@Override
|
|
2462
|
+
public int getVectorByDirection(int direction, int spanCount, int pos) {
|
|
2463
|
+
return FocusUtils.getVectorByDirection(direction, getOrientation());
|
|
2464
|
+
}
|
|
2465
|
+
|
|
2466
|
+
|
|
2467
|
+
@Override
|
|
2468
|
+
public LayoutManager getRealLayout() {
|
|
2469
|
+
return this;
|
|
2470
|
+
}
|
|
2471
|
+
|
|
2472
|
+
@Override
|
|
2473
|
+
public void layoutDecoratedWithMargins(@NonNull View child, int left, int top, int right, int bottom) {
|
|
2474
|
+
super.layoutDecoratedWithMargins(child, left, top, right, bottom);
|
|
2475
|
+
mExecutor.layoutDecoratedWithMargins(child, left, top, right, bottom);
|
|
2476
|
+
}
|
|
2477
|
+
}
|
|
2478
|
+
|
|
2479
|
+
protected void onLayoutComplete(State state) {
|
|
2480
|
+
if (getEventDeliverer() != null) {
|
|
2481
|
+
HippyMap map = new HippyMap();
|
|
2482
|
+
map.pushInt("itemCount", state.getItemCount());
|
|
2483
|
+
map.pushString("sid", ExtendUtil.getViewSID(this));
|
|
2484
|
+
getEventDeliverer().sendEvent("onLayoutComplete", getHandleEventNodeId(), map);
|
|
2485
|
+
}
|
|
2486
|
+
if (mOnLayoutListener != null) {
|
|
2487
|
+
mOnLayoutListener.onLayoutComplete(this, state);
|
|
2488
|
+
}
|
|
2489
|
+
}
|
|
2490
|
+
|
|
2491
|
+
|
|
2492
|
+
protected Animator mShakeEndAnimator;
|
|
2493
|
+
|
|
2494
|
+
protected void exeShakeRecycleView() {
|
|
2495
|
+
|
|
2496
|
+
if (mShakeEndAnimator == null) {
|
|
2497
|
+
final Animator shake = AnimationStore.defaultShakeEndAnimator(this, getLayoutManagerCompat().getOrientation());
|
|
2498
|
+
mShakeEndAnimator = shake;
|
|
2499
|
+
notifyShakeEnd();
|
|
2500
|
+
shake.start();
|
|
2501
|
+
shake.addListener(new AnimatorListenerAdapter() {
|
|
2502
|
+
@Override
|
|
2503
|
+
public void onAnimationEnd(Animator animation) {
|
|
2504
|
+
super.onAnimationEnd(animation);
|
|
2505
|
+
mShakeEndAnimator = null;
|
|
2506
|
+
}
|
|
2507
|
+
});
|
|
2508
|
+
}
|
|
2509
|
+
}
|
|
2510
|
+
|
|
2511
|
+
protected boolean exeAnimRunning = false;
|
|
2512
|
+
|
|
2513
|
+
protected void exeShakeSelf(View view, int direction) {
|
|
2514
|
+
if (!exeAnimRunning) {
|
|
2515
|
+
exeAnimRunning = true;
|
|
2516
|
+
if (direction == View.FOCUS_DOWN || direction == View.FOCUS_UP) {
|
|
2517
|
+
ObjectAnimator shakeSelfAnim = ObjectAnimator.ofFloat(view, View.TRANSLATION_Y.getName(), 0, 5f);//抖动幅度0到5
|
|
2518
|
+
shakeSelfAnim.setDuration(250);//持续时间
|
|
2519
|
+
shakeSelfAnim.setInterpolator(new CycleInterpolator(2));//抖动次数
|
|
2520
|
+
shakeSelfAnim.addListener(new AnimatorListenerAdapter() {
|
|
2521
|
+
@Override
|
|
2522
|
+
public void onAnimationCancel(Animator animation) {
|
|
2523
|
+
exeAnimRunning = false;
|
|
2524
|
+
}
|
|
2525
|
+
|
|
2526
|
+
@Override
|
|
2527
|
+
public void onAnimationEnd(Animator animation) {
|
|
2528
|
+
exeAnimRunning = false;
|
|
2529
|
+
}
|
|
2530
|
+
});
|
|
2531
|
+
shakeSelfAnim.start();//开始动画
|
|
2532
|
+
} else {
|
|
2533
|
+
ObjectAnimator shakeSelfAnim = ObjectAnimator.ofFloat(view, View.TRANSLATION_X.getName(), 0, 5f);//抖动幅度0到5
|
|
2534
|
+
shakeSelfAnim.setDuration(250);//持续时间
|
|
2535
|
+
shakeSelfAnim.setInterpolator(new CycleInterpolator(2));//抖动次数
|
|
2536
|
+
shakeSelfAnim.addListener(new AnimatorListenerAdapter() {
|
|
2537
|
+
@Override
|
|
2538
|
+
public void onAnimationCancel(Animator animation) {
|
|
2539
|
+
exeAnimRunning = false;
|
|
2540
|
+
}
|
|
2541
|
+
|
|
2542
|
+
@Override
|
|
2543
|
+
public void onAnimationEnd(Animator animation) {
|
|
2544
|
+
exeAnimRunning = false;
|
|
2545
|
+
}
|
|
2546
|
+
});
|
|
2547
|
+
shakeSelfAnim.start();//开始动画
|
|
2548
|
+
}
|
|
2549
|
+
}
|
|
2550
|
+
}
|
|
2551
|
+
|
|
2552
|
+
protected void notifyShakeEnd() {
|
|
2553
|
+
|
|
2554
|
+
}
|
|
2555
|
+
|
|
2556
|
+
public static class FocusEventListener {
|
|
2557
|
+
|
|
2558
|
+
public View onFocusSearchFailedAtEnd(@NonNull View focused, int direction) {
|
|
2559
|
+
return focused;
|
|
2560
|
+
}
|
|
2561
|
+
|
|
2562
|
+
public View onInterceptFocusSearch(@NonNull View focused, int direction) {
|
|
2563
|
+
return null;
|
|
2564
|
+
}
|
|
2565
|
+
|
|
2566
|
+
public View onFocusSearchFailed(View focused, int focusDirection, RecyclerView.Recycler recycler, RecyclerView.State state) {
|
|
2567
|
+
return null;
|
|
2568
|
+
}
|
|
2569
|
+
|
|
2570
|
+
public View onInterceptFocusSearchFailed(View focused, int focusDirection, int vector) {
|
|
2571
|
+
return null;
|
|
2572
|
+
}
|
|
2573
|
+
|
|
2574
|
+
}
|
|
2575
|
+
|
|
2576
|
+
final static class PendingWork {
|
|
2577
|
+
public int offset = 0;
|
|
2578
|
+
int type = 0;
|
|
2579
|
+
int position = -1;
|
|
2580
|
+
|
|
2581
|
+
public PendingWork() {
|
|
2582
|
+
this.type = 0;
|
|
2583
|
+
}
|
|
2584
|
+
|
|
2585
|
+
@Override
|
|
2586
|
+
public String toString() {
|
|
2587
|
+
return "PendingWork{" +
|
|
2588
|
+
"type=" + type +
|
|
2589
|
+
", position=" + position +
|
|
2590
|
+
", offset=" + offset +
|
|
2591
|
+
'}';
|
|
2592
|
+
}
|
|
2593
|
+
}
|
|
2594
|
+
|
|
2595
|
+
private static final class ReFocus {
|
|
2596
|
+
final int oldPosition;
|
|
2597
|
+
@Deprecated
|
|
2598
|
+
final View oldFocus;
|
|
2599
|
+
final View oldChild;
|
|
2600
|
+
final String oldName;
|
|
2601
|
+
boolean valid = true;
|
|
2602
|
+
|
|
2603
|
+
String oldFocusSid = null;
|
|
2604
|
+
boolean inReFocus = false;
|
|
2605
|
+
|
|
2606
|
+
private ReFocus(int oldPosition, View oldFocus, View oldChild, String oldFocusSid, String oldName) {
|
|
2607
|
+
this.oldPosition = oldPosition;
|
|
2608
|
+
this.oldFocus = oldFocus;
|
|
2609
|
+
this.oldChild = oldChild;
|
|
2610
|
+
this.oldFocusSid = oldFocusSid;
|
|
2611
|
+
this.oldName = oldName;
|
|
2612
|
+
}
|
|
2613
|
+
|
|
2614
|
+
@Override
|
|
2615
|
+
public String toString() {
|
|
2616
|
+
return "ReFocus{" +
|
|
2617
|
+
"oldPosition=" + oldPosition +
|
|
2618
|
+
", oldFocus=" + oldFocus +
|
|
2619
|
+
", oldChild=" + oldChild +
|
|
2620
|
+
", valid=" + valid +
|
|
2621
|
+
", oldFocusSID=" + oldFocusSid +
|
|
2622
|
+
'}';
|
|
2623
|
+
}
|
|
2624
|
+
}
|
|
2625
|
+
|
|
2626
|
+
|
|
2627
|
+
private void stopListenGlobalFocusChange() {
|
|
2628
|
+
if (mOnGlobalFocusChangeListener != null) {
|
|
2629
|
+
getViewTreeObserver().removeOnGlobalFocusChangeListener(mOnGlobalFocusChangeListener);
|
|
2630
|
+
}
|
|
2631
|
+
}
|
|
2632
|
+
|
|
2633
|
+
@Override
|
|
2634
|
+
protected void onAttachedToWindow() {
|
|
2635
|
+
super.onAttachedToWindow();
|
|
2636
|
+
listenGlobalFocusChangeIfNeed();
|
|
2637
|
+
if (LogUtils.isDebug()) {
|
|
2638
|
+
Log.d(TAG, "TVListAttachEvent ++ onAttachedToWindow : " + hasFocus() + " this :" + this);
|
|
2639
|
+
}
|
|
2640
|
+
// Log.i(TAG,"onAttachedToWindow");
|
|
2641
|
+
if (isDetached) {
|
|
2642
|
+
//20220731 zhaopeng 这里如果不手动刷新,在TVList嵌套TVList并且detach后,会因列表没有重新layout而导致焦点寻焦错乱
|
|
2643
|
+
onReAttached();
|
|
2644
|
+
}
|
|
2645
|
+
isAttached = true;
|
|
2646
|
+
scaleChildren4Coverflow();
|
|
2647
|
+
}
|
|
2648
|
+
|
|
2649
|
+
protected void onReAttached() {
|
|
2650
|
+
requestLayoutManual();
|
|
2651
|
+
}
|
|
2652
|
+
|
|
2653
|
+
public boolean isAttached() {
|
|
2654
|
+
return isAttached;
|
|
2655
|
+
}
|
|
2656
|
+
|
|
2657
|
+
@Override
|
|
2658
|
+
protected void onDetachedFromWindow() {
|
|
2659
|
+
super.onDetachedFromWindow();
|
|
2660
|
+
stopListenGlobalFocusChange();
|
|
2661
|
+
if (mManagerType == 1 && getLayoutManagerCompat() != null) {
|
|
2662
|
+
getLayoutManagerCompat().getExecutor().clearReFocus();
|
|
2663
|
+
}
|
|
2664
|
+
//FIXME 这里因为整个list都detach了,所以焦点的view一定不存在了,这里需要验证
|
|
2665
|
+
mFocusChildPosition = -1;
|
|
2666
|
+
isDetached = true;
|
|
2667
|
+
isAttached = false;
|
|
2668
|
+
if (LogUtils.isDebug()) {
|
|
2669
|
+
Log.d(TAG, "TVListAttachEvent -- onDetachedFromWindow : " + hasFocus() + " this :" + this);
|
|
2670
|
+
}
|
|
2671
|
+
}
|
|
2672
|
+
|
|
2673
|
+
private void listenGlobalFocusChangeIfNeed() {
|
|
2674
|
+
stopListenGlobalFocusChange();
|
|
2675
|
+
if (forceListenGlobalFocusChange) {
|
|
2676
|
+
mOnGlobalFocusChangeListener = new ViewTreeObserver.OnGlobalFocusChangeListener() {
|
|
2677
|
+
@Override
|
|
2678
|
+
public void onGlobalFocusChanged(View oldFocus, View newFocus) {
|
|
2679
|
+
if (LogUtils.isDebug()) {
|
|
2680
|
+
Log.d(TAG, "onGlobalFocusChanged hasFocus : " + hasFocus() + " this :" + this);
|
|
2681
|
+
}
|
|
2682
|
+
if (hasFocus()) {
|
|
2683
|
+
if (oldFocus == null) {
|
|
2684
|
+
//首次获得焦点
|
|
2685
|
+
notifyRecyclerViewFocusChanged(true, false, null, newFocus, false);
|
|
2686
|
+
} else {
|
|
2687
|
+
//焦点在内部,但上一个view不属于内部
|
|
2688
|
+
final boolean isOldFocusDescendantOf = TVViewUtil.isViewDescendantOf(oldFocus, TVListView.this);
|
|
2689
|
+
if (!isOldFocusDescendantOf) {
|
|
2690
|
+
notifyRecyclerViewFocusChanged(true, false, oldFocus, newFocus, false);
|
|
2691
|
+
}
|
|
2692
|
+
}
|
|
2693
|
+
} else {
|
|
2694
|
+
final boolean isNewFocusDescendantOf = TVViewUtil.isViewDescendantOf(newFocus, TVListView.this);
|
|
2695
|
+
if (LogUtils.isDebug()) {
|
|
2696
|
+
Log.d(TAG, "onGlobalFocusChanged hasFocus : " + hasFocus() + " isNewFocusDescendantOf : " + isNewFocusDescendantOf);
|
|
2697
|
+
}
|
|
2698
|
+
if (!isNewFocusDescendantOf) {
|
|
2699
|
+
//焦点丢失
|
|
2700
|
+
final boolean isOldFocusDescendantOf = TVViewUtil.isViewDescendantOf(oldFocus, TVListView.this);
|
|
2701
|
+
|
|
2702
|
+
if (isOldFocusDescendantOf) {
|
|
2703
|
+
notifyRecyclerViewFocusChanged(false, true, oldFocus, newFocus, true);
|
|
2704
|
+
}
|
|
2705
|
+
}
|
|
2706
|
+
}
|
|
2707
|
+
}
|
|
2708
|
+
};
|
|
2709
|
+
getViewTreeObserver().addOnGlobalFocusChangeListener(mOnGlobalFocusChangeListener);
|
|
2710
|
+
}
|
|
2711
|
+
}
|
|
2712
|
+
|
|
2713
|
+
protected boolean forceListenGlobalFocusChange = true;
|
|
2714
|
+
|
|
2715
|
+
public void setForceListenGlobalFocusChange(boolean forceListenGlobalFocusChange) {
|
|
2716
|
+
this.forceListenGlobalFocusChange = forceListenGlobalFocusChange;
|
|
2717
|
+
}
|
|
2718
|
+
|
|
2719
|
+
private ViewTreeObserver.OnGlobalFocusChangeListener mOnGlobalFocusChangeListener;
|
|
2720
|
+
|
|
2721
|
+
boolean lastFocusState = false;
|
|
2722
|
+
|
|
2723
|
+
private void notifyRecyclerViewFocusChanged(boolean hasFocus, boolean isOldFocusDescendantOf, View oldFocus, View focused, boolean loseFocus) {
|
|
2724
|
+
//
|
|
2725
|
+
if (LogUtils.isDebug()) {
|
|
2726
|
+
Log.d(TAG, "notifyRecyclerViewFocusChanged lastFocusState != hasFocus:" + (lastFocusState != hasFocus) + " ,enableSelectOnFocus:" + enableSelectOnFocus + ",loseFocus:" + loseFocus + ",isOldFocusDescendantOf:" + isOldFocusDescendantOf);
|
|
2727
|
+
}
|
|
2728
|
+
|
|
2729
|
+
if (lastFocusState != hasFocus) {
|
|
2730
|
+
onRecyclerViewFocusChanged(hasFocus, focused);
|
|
2731
|
+
}
|
|
2732
|
+
if (lastFocusState != hasFocus && (enableSelectOnFocus || loseFocus)) {
|
|
2733
|
+
final View selectedChild = findSelectedChild();
|
|
2734
|
+
if (!hasFocus && isOldFocusDescendantOf) {
|
|
2735
|
+
if (selectedChild != null) {
|
|
2736
|
+
if (focused != selectedChild) {
|
|
2737
|
+
changeSelectState(selectedChild, true);
|
|
2738
|
+
}
|
|
2739
|
+
if (LogUtils.isDebug()) {
|
|
2740
|
+
LogUtils.v("hippyState", "+++setState true child:" + selectedChild);
|
|
2741
|
+
}
|
|
2742
|
+
callItemStateChangeIfNeed(selectedChild, StateListPresenter.STATE_SELECTED);
|
|
2743
|
+
}
|
|
2744
|
+
}
|
|
2745
|
+
lastFocusState = hasFocus;
|
|
2746
|
+
}
|
|
2747
|
+
}
|
|
2748
|
+
|
|
2749
|
+
protected void onRecyclerViewFocusChanged(boolean hasFocus, View focused) {
|
|
2750
|
+
//
|
|
2751
|
+
if (LogUtils.isDebug()) {
|
|
2752
|
+
Log.d(TAG, "onRecyclerViewFocusChanged hasFocus : " + hasFocus + " this :" + this);
|
|
2753
|
+
}
|
|
2754
|
+
if (LogUtils.isDebug()) {
|
|
2755
|
+
LogUtils.d(TAG, "onRecyclerViewFocusChanged context:" + getContext());
|
|
2756
|
+
}
|
|
2757
|
+
if(hasFocus){
|
|
2758
|
+
//handleDimItems();
|
|
2759
|
+
UnDimAllItems();
|
|
2760
|
+
}else{
|
|
2761
|
+
handleDimItems();
|
|
2762
|
+
}
|
|
2763
|
+
if(hasFocus){
|
|
2764
|
+
//mFocusChildPosition = -1;
|
|
2765
|
+
postInvalidateDelayed(16);
|
|
2766
|
+
}
|
|
2767
|
+
if (getContext() instanceof HippyInstanceContext) {
|
|
2768
|
+
if (hasFocus) {
|
|
2769
|
+
TriggerTaskManagerModule.dispatchTriggerTask(this, "onFocusAcquired");
|
|
2770
|
+
} else {
|
|
2771
|
+
TriggerTaskManagerModule.dispatchTriggerTask(this, "onFocusLost");
|
|
2772
|
+
}
|
|
2773
|
+
}
|
|
2774
|
+
}
|
|
2775
|
+
|
|
2776
|
+
protected void callItemStateChangeIfNeed(View child, int state) {
|
|
2777
|
+
if (state == StateListPresenter.STATE_SELECTED) {
|
|
2778
|
+
InternalExtendViewUtil.sendEventOnRequestListChildSelect(this, child);
|
|
2779
|
+
}
|
|
2780
|
+
}
|
|
2781
|
+
|
|
2782
|
+
|
|
2783
|
+
void handleScrollValue() {
|
|
2784
|
+
handleScrollValue(false);
|
|
2785
|
+
}
|
|
2786
|
+
|
|
2787
|
+
private int mHandleEventNodeId = -1;
|
|
2788
|
+
|
|
2789
|
+
public void setHandleEventNodeId(int id) {
|
|
2790
|
+
this.mHandleEventNodeId = id;
|
|
2791
|
+
}
|
|
2792
|
+
|
|
2793
|
+
public void dimUnselectedItems(boolean enable) {
|
|
2794
|
+
this.dimUnselectedItems = enable;
|
|
2795
|
+
}
|
|
2796
|
+
|
|
2797
|
+
public int getHandleEventNodeId() {
|
|
2798
|
+
return mHandleEventNodeId > -1 ? mHandleEventNodeId : getId();
|
|
2799
|
+
}
|
|
2800
|
+
|
|
2801
|
+
protected void onScrollYChange(int scrollY) {
|
|
2802
|
+
if (mEnableScrollOffsetEvent) {
|
|
2803
|
+
//getOnScrollYOffsetChanged().send(this, generateScrollOffsetEvent(scrollY));
|
|
2804
|
+
eventDeliverer.sendEvent(getOnScrollYOffsetChanged(), getHandleEventNodeId(), generateScrollOffsetEvent(scrollY));
|
|
2805
|
+
}
|
|
2806
|
+
}
|
|
2807
|
+
|
|
2808
|
+
HippyViewEvent mOnScrollYChanged;
|
|
2809
|
+
|
|
2810
|
+
protected HippyViewEvent getOnScrollYOffsetChanged() {
|
|
2811
|
+
if (mOnScrollYChanged == null) {
|
|
2812
|
+
mOnScrollYChanged = new HippyViewEvent("onScrollOffset");
|
|
2813
|
+
}
|
|
2814
|
+
return mOnScrollYChanged;
|
|
2815
|
+
}
|
|
2816
|
+
|
|
2817
|
+
protected HippyMap generateScrollOffsetEvent(int offsetY) {
|
|
2818
|
+
HippyMap event = new HippyMap();
|
|
2819
|
+
event.pushDouble("y", offsetY);
|
|
2820
|
+
event.pushString("sid", ExtendUtil.getViewSID(this));
|
|
2821
|
+
return event;
|
|
2822
|
+
}
|
|
2823
|
+
|
|
2824
|
+
|
|
2825
|
+
@Override
|
|
2826
|
+
public void onScrolled(int x, int y) {
|
|
2827
|
+
super.onScrolled(x, y);
|
|
2828
|
+
mOffsetY += y;
|
|
2829
|
+
mOffsetX += x;
|
|
2830
|
+
if (LogUtils.isDebug()) {
|
|
2831
|
+
LogUtils.w("ScrollLog", "onScrolled:y" + y + ",this:" + this + ",eventID:" + getHandleEventNodeId());
|
|
2832
|
+
}
|
|
2833
|
+
sendOnScrollEvent();
|
|
2834
|
+
handleScrollValue();
|
|
2835
|
+
|
|
2836
|
+
//for(int i = 0; i < )
|
|
2837
|
+
if (x != 0 || y != 0) {
|
|
2838
|
+
scaleChildren4Coverflow();
|
|
2839
|
+
}
|
|
2840
|
+
|
|
2841
|
+
}
|
|
2842
|
+
|
|
2843
|
+
protected float minScale = 0;
|
|
2844
|
+
|
|
2845
|
+
/**
|
|
2846
|
+
* 遍历所有children,根据child离参照线(parent的中心)的远近,缩放child的大小
|
|
2847
|
+
*/
|
|
2848
|
+
protected void scaleChildren4Coverflow(){
|
|
2849
|
+
if (minScale > 0) {
|
|
2850
|
+
boolean isHorizontal = getOrientation() == HORIZONTAL;
|
|
2851
|
+
if(isHorizontal){
|
|
2852
|
+
float refLine = getWidth() / 2f;
|
|
2853
|
+
for(int i= 0;i < getChildCount(); i ++){
|
|
2854
|
+
View child = getChildAt(i);
|
|
2855
|
+
//Log.i("DebugCoverFlow","pos: "+pos+",left:"+child.getLeft()+",top:"+child.getTop()+",offsetX:"+mOffsetX+",offsetY:"+mOffsetY);
|
|
2856
|
+
int childCenter = child.getLeft() + child.getWidth() / 2;
|
|
2857
|
+
float distance = Math.abs(childCenter - refLine);
|
|
2858
|
+
float rateOfDistance = 1 - (distance / refLine);
|
|
2859
|
+
float childScale = minScale + ((1- minScale) * rateOfDistance);
|
|
2860
|
+
if (childScale > 0.99) {
|
|
2861
|
+
childScale = 1;
|
|
2862
|
+
}
|
|
2863
|
+
childScale = Math.max(minScale,childScale);
|
|
2864
|
+
// Log.i(TAG,"child index:"+i+",childScale:"+childScale);
|
|
2865
|
+
//0.5 0.6 0.7
|
|
2866
|
+
//0 0.
|
|
2867
|
+
if(child.getLeft() > refLine){
|
|
2868
|
+
//在右
|
|
2869
|
+
child.setPivotX(0);
|
|
2870
|
+
}else{
|
|
2871
|
+
//在左
|
|
2872
|
+
if(child.getRight() <= refLine){
|
|
2873
|
+
child.setPivotX(child.getWidth());
|
|
2874
|
+
}else{
|
|
2875
|
+
child.setPivotX(child.getWidth() / 2f);
|
|
2876
|
+
}
|
|
2877
|
+
}
|
|
2878
|
+
child.setPivotY(child.getHeight() / 2f);
|
|
2879
|
+
child.setScaleX(childScale);
|
|
2880
|
+
child.setScaleY(childScale);
|
|
2881
|
+
}
|
|
2882
|
+
}else{
|
|
2883
|
+
float refLine = getHeight() / 2f;
|
|
2884
|
+
for(int i= 0;i < getChildCount(); i ++){
|
|
2885
|
+
View child = getChildAt(i);
|
|
2886
|
+
//Log.i("DebugCoverFlow","pos: "+pos+",left:"+child.getLeft()+",top:"+child.getTop()+",offsetX:"+mOffsetX+",offsetY:"+mOffsetY);
|
|
2887
|
+
int childCenter = child.getTop() + child.getHeight() / 2;
|
|
2888
|
+
float distance = Math.abs(childCenter - refLine);
|
|
2889
|
+
float rateOfDistance = 1 - (distance / refLine);
|
|
2890
|
+
float childScale = minScale + ((1- minScale) * rateOfDistance);
|
|
2891
|
+
if (childScale > 0.99) {
|
|
2892
|
+
childScale = 1;
|
|
2893
|
+
}
|
|
2894
|
+
childScale = Math.max(minScale,childScale);
|
|
2895
|
+
//0.5 0.6 0.7
|
|
2896
|
+
//0 0.
|
|
2897
|
+
if(child.getTop() > refLine){
|
|
2898
|
+
//在右
|
|
2899
|
+
child.setPivotY(0);
|
|
2900
|
+
}else{
|
|
2901
|
+
//在左
|
|
2902
|
+
if(child.getBottom() <= refLine){
|
|
2903
|
+
child.setPivotY(child.getHeight());
|
|
2904
|
+
}else{
|
|
2905
|
+
child.setPivotY(child.getHeight() / 2f);
|
|
2906
|
+
}
|
|
2907
|
+
}
|
|
2908
|
+
child.setPivotX(child.getWidth() / 2f);
|
|
2909
|
+
child.setScaleX(childScale);
|
|
2910
|
+
child.setScaleY(childScale);
|
|
2911
|
+
}
|
|
2912
|
+
}
|
|
2913
|
+
}
|
|
2914
|
+
}
|
|
2915
|
+
|
|
2916
|
+
|
|
2917
|
+
protected long mLastScrollEventTimeStamp = -1;
|
|
2918
|
+
protected int mScrollEventThrottle = 400; // 400ms最多回调一次
|
|
2919
|
+
|
|
2920
|
+
|
|
2921
|
+
/**
|
|
2922
|
+
* wanglei 发送滑动事件
|
|
2923
|
+
*/
|
|
2924
|
+
public void sendScrollEvent(View view, String eventName, HippyMap params) {
|
|
2925
|
+
//HippyViewEvent event = new HippyViewEvent(eventName);
|
|
2926
|
+
//event.send(view, params != null ? params : "");
|
|
2927
|
+
eventDeliverer.sendEvent(eventName, view, params);
|
|
2928
|
+
}
|
|
2929
|
+
|
|
2930
|
+
|
|
2931
|
+
protected void sendOnScrollEvent() {
|
|
2932
|
+
if (mScrollEventEnable) {
|
|
2933
|
+
long currTime = System.currentTimeMillis();
|
|
2934
|
+
if (currTime - mLastScrollEventTimeStamp < mScrollEventThrottle) {
|
|
2935
|
+
return;
|
|
2936
|
+
}
|
|
2937
|
+
onSendScrollEvent();
|
|
2938
|
+
mLastScrollEventTimeStamp = currTime;
|
|
2939
|
+
//getOnScrollEvent().send(this, generateScrollEvent());
|
|
2940
|
+
eventDeliverer.sendEvent(getOnScrollEvent(), getHandleEventNodeId(), generateScrollEvent());
|
|
2941
|
+
}
|
|
2942
|
+
}
|
|
2943
|
+
|
|
2944
|
+
private HippyViewEvent mOnScrollEvent;
|
|
2945
|
+
|
|
2946
|
+
protected HippyViewEvent getOnScrollEvent() {
|
|
2947
|
+
if (mOnScrollEvent == null) {
|
|
2948
|
+
mOnScrollEvent = new HippyViewEvent(HippyScrollViewEventHelper.EVENT_TYPE_SCROLL);
|
|
2949
|
+
}
|
|
2950
|
+
return mOnScrollEvent;
|
|
2951
|
+
}
|
|
2952
|
+
|
|
2953
|
+
public void setScrollEventThrottle(int scrollEventThrottle) {
|
|
2954
|
+
mScrollEventThrottle = scrollEventThrottle;
|
|
2955
|
+
}
|
|
2956
|
+
|
|
2957
|
+
protected void onSendScrollEvent() {
|
|
2958
|
+
|
|
2959
|
+
}
|
|
2960
|
+
|
|
2961
|
+
// int scrollVector = 0;
|
|
2962
|
+
// @Override
|
|
2963
|
+
// public boolean dispatchKeyEvent(KeyEvent event) {
|
|
2964
|
+
// if(event.getAction() == KeyEvent.ACTION_DOWN){
|
|
2965
|
+
// if(getMyLayoutManager().orientation == VERTICAL){
|
|
2966
|
+
// //纵向
|
|
2967
|
+
// }else{
|
|
2968
|
+
//
|
|
2969
|
+
// }
|
|
2970
|
+
// }
|
|
2971
|
+
// return super.dispatchKeyEvent(event);
|
|
2972
|
+
// }
|
|
2973
|
+
|
|
2974
|
+
private int lastOffsetY = 0;
|
|
2975
|
+
public int mOffsetY = 0;
|
|
2976
|
+
public int mOffsetX = 0;
|
|
2977
|
+
|
|
2978
|
+
void handleScrollValue(boolean force) {
|
|
2979
|
+
final int sy = mOffsetY;
|
|
2980
|
+
final int delta = sy - lastOffsetY;
|
|
2981
|
+
if (LogUtils.isDebug()) {
|
|
2982
|
+
LogUtils.d("ScrollLog", "handleScrollValue ,force:" + force + ",offsetY:" + mOffsetY + ",lastY:" + lastOffsetY);
|
|
2983
|
+
}
|
|
2984
|
+
lastOffsetY = sy;
|
|
2985
|
+
int vector = 0;
|
|
2986
|
+
if (delta > 0) {
|
|
2987
|
+
vector = 1;
|
|
2988
|
+
}
|
|
2989
|
+
if (delta < 0) {
|
|
2990
|
+
vector = -1;
|
|
2991
|
+
}
|
|
2992
|
+
handleScrollValue(force, vector, sy);
|
|
2993
|
+
}
|
|
2994
|
+
|
|
2995
|
+
protected void onTriggerScrollYGreater() {
|
|
2996
|
+
|
|
2997
|
+
}
|
|
2998
|
+
|
|
2999
|
+
protected void onTriggerScrollYLesser() {
|
|
3000
|
+
|
|
3001
|
+
}
|
|
3002
|
+
|
|
3003
|
+
void handleScrollValue(boolean force, int vector, int sy) {
|
|
3004
|
+
|
|
3005
|
+
if (LogUtils.isDebug()) {
|
|
3006
|
+
LogUtils.d("ScrollLog", "handleScrollValue vector" + vector + ",force:" + force + ",scrollYGreaterReferenceValue:" + scrollYGreaterReferenceValue);
|
|
3007
|
+
}
|
|
3008
|
+
if (scrollYGreaterReferenceValue > -1 && vector > 0) {
|
|
3009
|
+
if (LogUtils.isDebug()) {
|
|
3010
|
+
LogUtils.v("ScrollLog", "scrollYGreaterCheckPoint:" + scrollYGreaterCheckPoint + ",offsetY:" + sy + ",scrollYGreaterReferenceValue:" + scrollYGreaterReferenceValue);
|
|
3011
|
+
}
|
|
3012
|
+
if (sy >= scrollYGreaterReferenceValue && (force || (scrollYGreaterCheckPoint <= scrollYGreaterReferenceValue))) {
|
|
3013
|
+
//第一次触发
|
|
3014
|
+
scrollYGreaterCheckPoint = sy;
|
|
3015
|
+
scrollYLesserCheckPoint = sy;
|
|
3016
|
+
if (LogUtils.isDebug()) {
|
|
3017
|
+
LogUtils.e("ScrollLog", "++++onScrollValueGreater sy:" + sy + ",force:" + force + "getHandleEventNodeId():" + getHandleEventNodeId() + ",this:" + this);
|
|
3018
|
+
}
|
|
3019
|
+
TriggerTaskManagerModule.dispatchTriggerTask(this, "onScrollYGreater", getHandleEventNodeId());
|
|
3020
|
+
onTriggerScrollYGreater();
|
|
3021
|
+
//new HippyViewEvent("onScrollYGreaterReference").send(this, null);
|
|
3022
|
+
eventDeliverer.sendEvent("onScrollYGreaterReference", getHandleEventNodeId(), null);
|
|
3023
|
+
} else {
|
|
3024
|
+
if (LogUtils.isDebug()) {
|
|
3025
|
+
LogUtils.d("ScrollLog", "scrollYGreaterCheckPoint fail sy:" + sy + ",force:" + force + ",scrollYGreaterCheckPoint:" + scrollYGreaterCheckPoint);
|
|
3026
|
+
}
|
|
3027
|
+
}
|
|
3028
|
+
}
|
|
3029
|
+
|
|
3030
|
+
if (scrollYLesserReferenceValue > -1 && vector < 0) {
|
|
3031
|
+
if (LogUtils.isDebug()) {
|
|
3032
|
+
LogUtils.v("ScrollLog", "scrollYLesserCheckPoint:" + scrollYLesserCheckPoint + ",offsetY:" + sy + ",scrollYLesserReferenceValue:" + scrollYLesserReferenceValue);
|
|
3033
|
+
}
|
|
3034
|
+
if (sy <= scrollYLesserReferenceValue && (force || (scrollYLesserCheckPoint >= scrollYLesserReferenceValue))) {
|
|
3035
|
+
if (LogUtils.isDebug()) {
|
|
3036
|
+
LogUtils.e("ScrollLog", "---onScrollValueLesser sy:" + sy + ",force:" + force + "getHandleEventNodeId:" + getHandleEventNodeId() + ",this:" + this);
|
|
3037
|
+
}
|
|
3038
|
+
scrollYLesserCheckPoint = sy;
|
|
3039
|
+
scrollYGreaterCheckPoint = sy;
|
|
3040
|
+
TriggerTaskManagerModule.dispatchTriggerTask(this, "onScrollYLesser", getHandleEventNodeId());
|
|
3041
|
+
onTriggerScrollYLesser();
|
|
3042
|
+
//new HippyViewEvent("onScrollYLesserReference").send(this, null);
|
|
3043
|
+
eventDeliverer.sendEvent("onScrollYLesserReference", getHandleEventNodeId(), null);
|
|
3044
|
+
} else {
|
|
3045
|
+
if (LogUtils.isDebug()) {
|
|
3046
|
+
LogUtils.d("ScrollLog", "scrollYLesserCheckPoint fail sy:" + sy + ",force:" + force + ",scrollYLesserCheckPoint:" + scrollYLesserCheckPoint);
|
|
3047
|
+
}
|
|
3048
|
+
}
|
|
3049
|
+
}
|
|
3050
|
+
if (mManagerType == 1) {
|
|
3051
|
+
getLayoutManagerCompat().getExecutor().handleScrollValue(vector, sy);
|
|
3052
|
+
}
|
|
3053
|
+
}
|
|
3054
|
+
|
|
3055
|
+
public void setCheckScrollOffsetOnStateChanged(boolean b) {
|
|
3056
|
+
this.checkScrollOffsetOnStateChanged = b;
|
|
3057
|
+
}
|
|
3058
|
+
|
|
3059
|
+
private boolean checkScrollOffsetOnStateChanged = false;
|
|
3060
|
+
|
|
3061
|
+
int lastState = SCROLL_STATE_IDLE;
|
|
3062
|
+
public static int DEFAULT_CATEGORY = 0;
|
|
3063
|
+
|
|
3064
|
+
@Override
|
|
3065
|
+
public void onScrollStateChanged(int state) {
|
|
3066
|
+
super.onScrollStateChanged(state);
|
|
3067
|
+
if (checkScrollOffsetOnStateChanged && state == SCROLL_STATE_IDLE) {
|
|
3068
|
+
LogUtils.d("ScrollLog", "onScrollState Changed handleScrollValue offsetY:" + mOffsetY + ",state:" + state);
|
|
3069
|
+
handleScrollValue(true);
|
|
3070
|
+
}
|
|
3071
|
+
if (lastState != SCROLL_STATE_IDLE && !postTaskPaused) {
|
|
3072
|
+
// batchTask();
|
|
3073
|
+
this.resumePostTask();
|
|
3074
|
+
}
|
|
3075
|
+
lastState = state;
|
|
3076
|
+
if (getEventDeliverer() != null) {
|
|
3077
|
+
HippyMap stateMap = new HippyMap();
|
|
3078
|
+
stateMap.pushInt("oldState", lastState);
|
|
3079
|
+
stateMap.pushInt("newState", state);
|
|
3080
|
+
HippyMap contentOffset = new HippyMap();
|
|
3081
|
+
contentOffset.pushDouble("x", PixelUtil.px2dp(getOffsetX()));
|
|
3082
|
+
contentOffset.pushDouble("y", PixelUtil.px2dp(getOffsetY()));
|
|
3083
|
+
HippyMap map = new HippyMap();
|
|
3084
|
+
map.pushMap("state", stateMap);
|
|
3085
|
+
map.pushMap("contentOffset", contentOffset);
|
|
3086
|
+
map.pushMap("sid", ExtendUtil.getViewState(this));
|
|
3087
|
+
getEventDeliverer().sendEvent("onScrollStateChanged", getHandleEventNodeId(), map);
|
|
3088
|
+
}
|
|
3089
|
+
|
|
3090
|
+
}
|
|
3091
|
+
|
|
3092
|
+
private SparseArray<SparseArray<Task>> mTaskHub;
|
|
3093
|
+
|
|
3094
|
+
final static class Task {
|
|
3095
|
+
Runnable runnable;
|
|
3096
|
+
int delay;
|
|
3097
|
+
int key;
|
|
3098
|
+
boolean isDone = false;
|
|
3099
|
+
|
|
3100
|
+
public Task(Runnable runnable, int delay, int key) {
|
|
3101
|
+
this.runnable = runnable;
|
|
3102
|
+
this.delay = delay;
|
|
3103
|
+
this.key = key;
|
|
3104
|
+
}
|
|
3105
|
+
}
|
|
3106
|
+
|
|
3107
|
+
public void clearAllTask() {
|
|
3108
|
+
if (LogUtils.isDebug()) {
|
|
3109
|
+
Log.e(FastAdapter.TAG_POST, "SCROLL_POSTER clearAllTask called !! mTaskHub size: " + (mTaskHub == null ? 0 : mTaskHub.size()) + ",this:" + this);
|
|
3110
|
+
}
|
|
3111
|
+
if (mTaskHub != null) {
|
|
3112
|
+
for (int i = 0; i < mTaskHub.size(); i++) {
|
|
3113
|
+
SparseArray<Task> mTasks = mTaskHub.get(mTaskHub.keyAt(i));
|
|
3114
|
+
if (mTasks != null) {
|
|
3115
|
+
for (int j = 0; j < mTasks.size(); j++) {
|
|
3116
|
+
removeCallbacks(mTasks.valueAt(j).runnable);
|
|
3117
|
+
if (LogUtils.isDebug()) {
|
|
3118
|
+
Log.e("HippyImage", "HippyImage clearAllTask clearTasks ");
|
|
3119
|
+
}
|
|
3120
|
+
}
|
|
3121
|
+
if (LogUtils.isDebug()) {
|
|
3122
|
+
Log.w(FastAdapter.TAG_POST, "SCROLL_POSTER clearAllTask clearTasks category:" + mTaskHub.keyAt(i) + ",size:" + mTasks.size());
|
|
3123
|
+
}
|
|
3124
|
+
mTasks.clear();
|
|
3125
|
+
}
|
|
3126
|
+
}
|
|
3127
|
+
mTaskHub.clear();
|
|
3128
|
+
}
|
|
3129
|
+
}
|
|
3130
|
+
|
|
3131
|
+
public void clearTaskByCate(int cate) {
|
|
3132
|
+
SparseArray<Task> mTasks = mTaskHub == null ? null : mTaskHub.get(cate);
|
|
3133
|
+
if (mTasks != null) {
|
|
3134
|
+
for (int i = 0; i < mTasks.size(); i++) {
|
|
3135
|
+
int type = mTasks.keyAt(i);
|
|
3136
|
+
final Task current = mTasks.get(type);
|
|
3137
|
+
if (current != null) {
|
|
3138
|
+
if (LogUtils.isDebug()) {
|
|
3139
|
+
Log.e(FastAdapter.TAG_POST, "SCROLL_POSTER clearTaskByCate remove last category:" + cate + ",type:" + type);
|
|
3140
|
+
Log.e("HippyImage", "HippyImage clearTaskByCate remove last category:" + cate + ",type:" + type);
|
|
3141
|
+
}
|
|
3142
|
+
removeCallbacks(current.runnable);
|
|
3143
|
+
mTasks.remove(type);
|
|
3144
|
+
}
|
|
3145
|
+
}
|
|
3146
|
+
}
|
|
3147
|
+
}
|
|
3148
|
+
|
|
3149
|
+
|
|
3150
|
+
public void clearTask(int cate, int type) {
|
|
3151
|
+
SparseArray<Task> mTasks = mTaskHub == null ? null : mTaskHub.get(cate);
|
|
3152
|
+
if (mTasks != null) {
|
|
3153
|
+
final Task current = mTasks.get(type);
|
|
3154
|
+
if (current != null) {
|
|
3155
|
+
if (LogUtils.isDebug()) {
|
|
3156
|
+
Log.e(FastAdapter.TAG_POST, "SCROLL_POSTER clearTask remove last category:" + cate + ",type:" + type+",this:"+this);
|
|
3157
|
+
Log.e("HippyImage", "HippyImage clearTask remove last category:" + cate + ",type:" + type);
|
|
3158
|
+
}
|
|
3159
|
+
removeCallbacks(current.runnable);
|
|
3160
|
+
mTasks.remove(type);
|
|
3161
|
+
}
|
|
3162
|
+
}
|
|
3163
|
+
}
|
|
3164
|
+
|
|
3165
|
+
public void clearTask(int type) {
|
|
3166
|
+
this.clearTask(DEFAULT_CATEGORY, type);
|
|
3167
|
+
}
|
|
3168
|
+
|
|
3169
|
+
public void postTask(int type, Runnable r, int delay) {
|
|
3170
|
+
this.postTask(DEFAULT_CATEGORY, type, r, delay);
|
|
3171
|
+
}
|
|
3172
|
+
|
|
3173
|
+
public void postTask(int category, int type, Runnable r, int delay) {
|
|
3174
|
+
if (LogUtils.isDebug()) {
|
|
3175
|
+
Log.d(FastAdapter.TAG_POST, "SCROLL_POSTER postTask category:" + category + ",type:" + type + ",delay:" + delay+",this:"+this);
|
|
3176
|
+
}
|
|
3177
|
+
SparseArray<Task> mTasks;
|
|
3178
|
+
if (mTaskHub == null) {
|
|
3179
|
+
mTaskHub = new SparseArray<>();
|
|
3180
|
+
mTasks = new SparseArray<>();
|
|
3181
|
+
mTaskHub.put(category, mTasks);
|
|
3182
|
+
} else {
|
|
3183
|
+
mTasks = mTaskHub.get(category);
|
|
3184
|
+
}
|
|
3185
|
+
if (mTasks == null) {
|
|
3186
|
+
mTasks = new SparseArray<>();
|
|
3187
|
+
mTaskHub.put(category, mTasks);
|
|
3188
|
+
}
|
|
3189
|
+
|
|
3190
|
+
clearTask(category, type);
|
|
3191
|
+
if (!postTaskPaused && (lastState == SCROLL_STATE_IDLE || getScrollState() == SCROLL_STATE_IDLE)) {
|
|
3192
|
+
boolean b = postDelayed(r, delay);
|
|
3193
|
+
if (LogUtils.isDebug()) {
|
|
3194
|
+
boolean att = isAttachedToWindow();
|
|
3195
|
+
Log.e(FastAdapter.TAG_POST, "SCROLL_POSTER postTask IDLE_STATE post directly success:" + b + ",this:" + this + ",isAttachedToWindow:" + att + ",type:" + type);
|
|
3196
|
+
}
|
|
3197
|
+
} else {
|
|
3198
|
+
if (postTaskPaused) {
|
|
3199
|
+
if (LogUtils.isDebug()) {
|
|
3200
|
+
Log.e(FastAdapter.TAG_POST, "SCROLL_POSTER postTask on postTaskPaused put in Queue size:" + mTasks.size()+ ",category:"+category+",this:"+this);
|
|
3201
|
+
}
|
|
3202
|
+
}
|
|
3203
|
+
mTasks.put(type, new Task(r, delay, type));
|
|
3204
|
+
if (LogUtils.isDebug()) {
|
|
3205
|
+
Log.i(FastAdapter.TAG_POST, "SCROLL_POSTER postTask !SCROLL_STATE_IDLE put in Queue size:" + mTasks.size()+",this:"+this);
|
|
3206
|
+
}
|
|
3207
|
+
}
|
|
3208
|
+
}
|
|
3209
|
+
|
|
3210
|
+
public void batchTask() {
|
|
3211
|
+
if (LogUtils.isDebug()) {
|
|
3212
|
+
Log.w(FastAdapter.TAG_POST, "SCROLL_POSTER start batchTask ALL mTaskHub size:" + (mTaskHub == null ? 0 : mTaskHub.size())+",this:"+this);
|
|
3213
|
+
}
|
|
3214
|
+
if (mTaskHub != null) {
|
|
3215
|
+
for (int i = 0; i < mTaskHub.size(); i++) {
|
|
3216
|
+
batchTask(mTaskHub.keyAt(i));
|
|
3217
|
+
}
|
|
3218
|
+
mTaskHub.clear();
|
|
3219
|
+
}
|
|
3220
|
+
}
|
|
3221
|
+
|
|
3222
|
+
public void batchTask(int cate) {
|
|
3223
|
+
SparseArray<Task> mTasks = mTaskHub == null ? null : mTaskHub.get(cate);
|
|
3224
|
+
if (LogUtils.isDebug() && mTasks != null && mTasks.size() > 0) {
|
|
3225
|
+
Log.i(FastAdapter.TAG_POST, "START---------------SCROLL_POSTER exe batchTask category:" + cate + ",batchTask size:" + mTasks.size()+",this:"+this);
|
|
3226
|
+
}
|
|
3227
|
+
if (mTasks != null && mTasks.size() > 0) {
|
|
3228
|
+
for (int i = 0; i < mTasks.size(); i++) {
|
|
3229
|
+
Task t = mTasks.valueAt(i);
|
|
3230
|
+
//这里16L是为了尽量将任务均摊,避免集中式执行
|
|
3231
|
+
postDelayed(t.runnable, t.delay);
|
|
3232
|
+
if (LogUtils.isDebug()) {
|
|
3233
|
+
Log.e(FastAdapter.TAG_POST, "SCROLL_POSTER exe batchTask category:" + cate + ",batchTask size:" + mTasks.size() + ",type:" + t.key+",this:"+this);
|
|
3234
|
+
}
|
|
3235
|
+
}
|
|
3236
|
+
mTasks.clear();
|
|
3237
|
+
}
|
|
3238
|
+
if (LogUtils.isDebug()) {
|
|
3239
|
+
Log.i(FastAdapter.TAG_POST, "END---------------SCROLL_POSTER exe batchTask category:" + cate);
|
|
3240
|
+
}
|
|
3241
|
+
}
|
|
3242
|
+
|
|
3243
|
+
@Override
|
|
3244
|
+
public void scrollToTop() {
|
|
3245
|
+
Log.i(TAG, "scrollToTop called this ID:" + getId()+",this:"+ExtendUtil.debugViewLite(this));
|
|
3246
|
+
scrollToPosition(0);
|
|
3247
|
+
if (mScrollToTopListener != null) {
|
|
3248
|
+
mScrollToTopListener.onScrolled(this, 0, 0);
|
|
3249
|
+
}
|
|
3250
|
+
resetScrollOffset();
|
|
3251
|
+
}
|
|
3252
|
+
|
|
3253
|
+
public boolean isPostTaskPaused() {
|
|
3254
|
+
return postTaskPaused;
|
|
3255
|
+
}
|
|
3256
|
+
|
|
3257
|
+
public void changePauseTaskState(boolean b){
|
|
3258
|
+
Log.i(TAG,"changePauseTaskState b "+b+",current:"+this.postTaskPaused);
|
|
3259
|
+
if(b != this.postTaskPaused){
|
|
3260
|
+
if(b){
|
|
3261
|
+
pausePostTask();
|
|
3262
|
+
}else{
|
|
3263
|
+
resumePostTask();
|
|
3264
|
+
}
|
|
3265
|
+
}
|
|
3266
|
+
this.postTaskPaused = b;
|
|
3267
|
+
}
|
|
3268
|
+
|
|
3269
|
+
public boolean isSkipFocusOnPause() {
|
|
3270
|
+
return skipFocusOnPause;
|
|
3271
|
+
}
|
|
3272
|
+
|
|
3273
|
+
@Override
|
|
3274
|
+
public void smoothScrollToTop() {
|
|
3275
|
+
smoothScrollToPosition(0);
|
|
3276
|
+
resetScrollOffset();
|
|
3277
|
+
}
|
|
3278
|
+
|
|
3279
|
+
Interpolator scrollInterpolator = null;
|
|
3280
|
+
|
|
3281
|
+
private float distanceInfluenceForSnapDuration(float f) {
|
|
3282
|
+
f -= 0.5F;
|
|
3283
|
+
f *= 0.47123894F;
|
|
3284
|
+
return (float)Math.sin((double)f);
|
|
3285
|
+
}
|
|
3286
|
+
|
|
3287
|
+
private int computeScrollDuration(int dx, int dy, int vx, int vy) {
|
|
3288
|
+
int absDx = Math.abs(dx);
|
|
3289
|
+
int absDy = Math.abs(dy);
|
|
3290
|
+
boolean horizontal = absDx > absDy;
|
|
3291
|
+
int velocity = (int)Math.sqrt((double)(vx * vx + vy * vy));
|
|
3292
|
+
int delta = (int)Math.sqrt((double)(dx * dx + dy * dy));
|
|
3293
|
+
int containerSize = horizontal ? this.getWidth() : this.getHeight();
|
|
3294
|
+
int halfContainerSize = containerSize / 2;
|
|
3295
|
+
float distanceRatio = Math.min(1.0F, 1.0F * (float)delta / (float)containerSize);
|
|
3296
|
+
float distance = (float)halfContainerSize + (float)halfContainerSize * this.distanceInfluenceForSnapDuration(distanceRatio);
|
|
3297
|
+
int duration;
|
|
3298
|
+
if (velocity > 0) {
|
|
3299
|
+
duration = 4 * Math.round(1000.0F * Math.abs(distance / (float)velocity));
|
|
3300
|
+
} else {
|
|
3301
|
+
float absDelta = (float)(horizontal ? absDx : absDy);
|
|
3302
|
+
duration = (int)((absDelta / (float)containerSize + 1.0F) * 300.0F);
|
|
3303
|
+
}
|
|
3304
|
+
return (int) Math.min(duration * scrollFactor, 2000);
|
|
3305
|
+
}
|
|
3306
|
+
|
|
3307
|
+
float scrollFactor = 1f;
|
|
3308
|
+
public void setScrollFactor(float factor){
|
|
3309
|
+
this.scrollFactor = factor;
|
|
3310
|
+
}
|
|
3311
|
+
|
|
3312
|
+
@Override
|
|
3313
|
+
public void smoothScrollBy(int dx, int dy) {
|
|
3314
|
+
if (scrollByMethod != null && scrollFactor != 1) {
|
|
3315
|
+
try {
|
|
3316
|
+
if(scrollInterpolator == null){
|
|
3317
|
+
scrollInterpolator = t -> {
|
|
3318
|
+
--t;
|
|
3319
|
+
return t * t * t * t * t + 1.0F;
|
|
3320
|
+
};
|
|
3321
|
+
}
|
|
3322
|
+
// Log.i(TAG,"smoothScrollBy reflect dx:"+dx+",dy:"+dy+",longClick :"+(mFlinger == null ? "null" : mFlinger.isOnLongKeyPressed()));
|
|
3323
|
+
scrollByMethod.invoke(viewFlinger,dx,dy,computeScrollDuration(dx,dy,0,0),scrollInterpolator);
|
|
3324
|
+
} catch (Exception e) {
|
|
3325
|
+
if(LogUtils.isDebug()) {
|
|
3326
|
+
e.printStackTrace();
|
|
3327
|
+
}
|
|
3328
|
+
super.smoothScrollBy(dx, dy);
|
|
3329
|
+
}
|
|
3330
|
+
}else{
|
|
3331
|
+
super.smoothScrollBy(dx, dy);
|
|
3332
|
+
}
|
|
3333
|
+
}
|
|
3334
|
+
|
|
3335
|
+
protected void resetScrollOffset() {
|
|
3336
|
+
LogUtils.w("ScrollLog", "resetScrollY");
|
|
3337
|
+
int dy = mOffsetY * -1;
|
|
3338
|
+
int dx = mOffsetX * -1;
|
|
3339
|
+
mOffsetY = 0;
|
|
3340
|
+
mOffsetX = 0;
|
|
3341
|
+
//fixme mOffsetX = 0; x方向暂未处理
|
|
3342
|
+
scrollYGreaterCheckPoint = -1;
|
|
3343
|
+
scrollYLesserCheckPoint = -1;
|
|
3344
|
+
if (myOnScrollListener != null) {
|
|
3345
|
+
myOnScrollListener.onScrolled(this, dx, dy);
|
|
3346
|
+
}
|
|
3347
|
+
|
|
3348
|
+
}
|
|
3349
|
+
|
|
3350
|
+
@Override
|
|
3351
|
+
public void scrollToPosition(int position) {
|
|
3352
|
+
super.scrollToPosition(position);
|
|
3353
|
+
if (LogUtils.isDebug()) {
|
|
3354
|
+
LogUtils.e("ScrollLog", "scrollToPosition called :position" + position);
|
|
3355
|
+
}
|
|
3356
|
+
getLayoutManagerCompat().getExecutor().clearReFocus();
|
|
3357
|
+
if (position == 0) {
|
|
3358
|
+
mOffsetY = 0;
|
|
3359
|
+
mOffsetX = 0;
|
|
3360
|
+
handleScrollValue(true);
|
|
3361
|
+
resetScrollOffset();
|
|
3362
|
+
}
|
|
3363
|
+
}
|
|
3364
|
+
|
|
3365
|
+
@Override
|
|
3366
|
+
public void smoothScrollToPosition(int position) {
|
|
3367
|
+
super.smoothScrollToPosition(position);
|
|
3368
|
+
if (LogUtils.isDebug()) {
|
|
3369
|
+
LogUtils.e("ScrollLog", "smoothScrollToPosition called :position" + position);
|
|
3370
|
+
}
|
|
3371
|
+
if (position == 0) {
|
|
3372
|
+
mOffsetY = 0;
|
|
3373
|
+
mOffsetX = 0;
|
|
3374
|
+
handleScrollValue(true);
|
|
3375
|
+
resetScrollOffset();
|
|
3376
|
+
}
|
|
3377
|
+
}
|
|
3378
|
+
|
|
3379
|
+
int scrollYGreaterCheckPoint = 0;
|
|
3380
|
+
int scrollYLesserCheckPoint = 0;
|
|
3381
|
+
protected boolean mScrollEventEnable = true;
|
|
3382
|
+
|
|
3383
|
+
private boolean mEnableScrollOffsetEvent = false;
|
|
3384
|
+
|
|
3385
|
+
public void setEnableScrollOffsetEvent(boolean mEnableScrollOffsetEvent) {
|
|
3386
|
+
this.mEnableScrollOffsetEvent = mEnableScrollOffsetEvent;
|
|
3387
|
+
}
|
|
3388
|
+
|
|
3389
|
+
public void setOnScrollEventEnable(boolean enable) {
|
|
3390
|
+
mScrollEventEnable = enable;
|
|
3391
|
+
}
|
|
3392
|
+
|
|
3393
|
+
int scrollYLesserReferenceValue = -1;
|
|
3394
|
+
int scrollYGreaterReferenceValue = -1;
|
|
3395
|
+
|
|
3396
|
+
public void setScrollYLesserReferenceValue(int scrollYLesserReferenceValue) {
|
|
3397
|
+
this.scrollYLesserReferenceValue = scrollYLesserReferenceValue;
|
|
3398
|
+
}
|
|
3399
|
+
|
|
3400
|
+
public void setScrollYGreaterReferenceValue(int scrollYGreaterReferenceValue) {
|
|
3401
|
+
this.scrollYGreaterReferenceValue = scrollYGreaterReferenceValue;
|
|
3402
|
+
}
|
|
3403
|
+
|
|
3404
|
+
public void setRequestChildOnScreenType(int requestChildOnScreenType) {
|
|
3405
|
+
getLayoutExecutor().getChildOnScreenScroller().setType(requestChildOnScreenType);
|
|
3406
|
+
}
|
|
3407
|
+
|
|
3408
|
+
protected LayoutManagerExecutor getLayoutExecutor() {
|
|
3409
|
+
return getLayoutManagerCompat().getExecutor();
|
|
3410
|
+
}
|
|
3411
|
+
|
|
3412
|
+
public void setRequestChildOnScreenClampBackward(int clampBackward) {
|
|
3413
|
+
getLayoutExecutor().getChildOnScreenScroller().setClampBackward(clampBackward);
|
|
3414
|
+
}
|
|
3415
|
+
|
|
3416
|
+
public void setRequestChildOnScreenClampForward(int clampForward) {
|
|
3417
|
+
getLayoutExecutor().getChildOnScreenScroller().setClampForward(clampForward);
|
|
3418
|
+
}
|
|
3419
|
+
|
|
3420
|
+
public void setScrollThresholdVertical(int threshold) {
|
|
3421
|
+
getLayoutExecutor().getChildOnScreenScroller().setScrollThresholdVertical(threshold);
|
|
3422
|
+
}
|
|
3423
|
+
|
|
3424
|
+
public void setScrollThresholdHorizontal(int threshold) {
|
|
3425
|
+
getLayoutExecutor().getChildOnScreenScroller().setScrollThresholdHorizontal(threshold);
|
|
3426
|
+
}
|
|
3427
|
+
|
|
3428
|
+
protected HippyMap generateScrollEvent() {
|
|
3429
|
+
float value;
|
|
3430
|
+
HippyMap contentOffset = new HippyMap();
|
|
3431
|
+
if (mManagerType == 1 && getLayoutManagerCompat() != null && getLayoutManagerCompat().getRealLayout().canScrollHorizontally()) {
|
|
3432
|
+
value = (mOffsetX);
|
|
3433
|
+
contentOffset.pushDouble("x", value);
|
|
3434
|
+
contentOffset.pushDouble("y", 0.0f);
|
|
3435
|
+
} else {
|
|
3436
|
+
value = (mOffsetY);
|
|
3437
|
+
contentOffset.pushDouble("x", 0.0f);
|
|
3438
|
+
contentOffset.pushDouble("y", value);
|
|
3439
|
+
}
|
|
3440
|
+
HippyMap event = new HippyMap();
|
|
3441
|
+
event.pushMap("contentOffset", contentOffset);
|
|
3442
|
+
return event;
|
|
3443
|
+
}
|
|
3444
|
+
|
|
3445
|
+
private int layoutTriggerTargetPosition = -1;
|
|
3446
|
+
|
|
3447
|
+
public void setLayoutTriggerTargetPosition(int position) {
|
|
3448
|
+
this.layoutTriggerTargetPosition = position;
|
|
3449
|
+
}
|
|
3450
|
+
|
|
3451
|
+
public interface PostContentHolder extends PostTaskHolder {
|
|
3452
|
+
|
|
3453
|
+
}
|
|
3454
|
+
|
|
3455
|
+
/**
|
|
3456
|
+
* zhaopeng add
|
|
3457
|
+
*/
|
|
3458
|
+
private boolean isPageHidden = false;
|
|
3459
|
+
|
|
3460
|
+
protected void onPageHiddenChanged(boolean hidden) {
|
|
3461
|
+
this.isPageHidden = hidden;
|
|
3462
|
+
if (hidden) {
|
|
3463
|
+
stopListenGlobalFocusChange();
|
|
3464
|
+
} else {
|
|
3465
|
+
listenGlobalFocusChangeIfNeed();
|
|
3466
|
+
}
|
|
3467
|
+
}
|
|
3468
|
+
|
|
3469
|
+
@Override
|
|
3470
|
+
public boolean isPageHidden() {
|
|
3471
|
+
return isPageHidden;
|
|
3472
|
+
}
|
|
3473
|
+
|
|
3474
|
+
@Override
|
|
3475
|
+
public void changePageHidden(boolean hidden) {
|
|
3476
|
+
onPageHiddenChanged(hidden);
|
|
3477
|
+
for (int i = 0; i < getChildCount(); i++) {
|
|
3478
|
+
final View v = getChildAt(i);
|
|
3479
|
+
if (v instanceof ExtendViewGroup) {
|
|
3480
|
+
((ExtendViewGroup) v).changePageHidden(hidden);
|
|
3481
|
+
}
|
|
3482
|
+
}
|
|
3483
|
+
}
|
|
3484
|
+
|
|
3485
|
+
/**
|
|
3486
|
+
* zhaopeng add
|
|
3487
|
+
*/
|
|
3488
|
+
|
|
3489
|
+
public int[] getBlockFocusOnFail() {
|
|
3490
|
+
return mBlockFocusOnFail;
|
|
3491
|
+
}
|
|
3492
|
+
|
|
3493
|
+
public void setListShakeSelf(boolean shakeSelf) {
|
|
3494
|
+
this.listShakeSelf = shakeSelf;
|
|
3495
|
+
}
|
|
3496
|
+
|
|
3497
|
+
@Override
|
|
3498
|
+
public void onRequestAutofocus(View child, View target, int type) {
|
|
3499
|
+
if(this.getVisibility() != View.VISIBLE){
|
|
3500
|
+
Log.e(AutoFocusManager.TAG,"onRequestAutofocus return on parent visibility != View.VISIBLE,"+ExtendUtil.debugView(this)+",target:"+ExtendUtil.debugView(target));
|
|
3501
|
+
return;
|
|
3502
|
+
}
|
|
3503
|
+
// if(getWidth() < 1 || getHeight() < 1){
|
|
3504
|
+
// Log.e(AutoFocusManager.TAG,"onRequestAutofocus return on parent size invalid "+ExtendUtil.debugView(this)+",target:"+ExtendUtil.debugView(target));
|
|
3505
|
+
// return;
|
|
3506
|
+
// }
|
|
3507
|
+
if (getParent() instanceof ExtendViewGroup) {
|
|
3508
|
+
ExtendViewGroup parent = (ExtendViewGroup) getParent();
|
|
3509
|
+
parent.onRequestAutofocus(this, target,type);
|
|
3510
|
+
} else {
|
|
3511
|
+
Log.i(AutoFocusManager.TAG, "onRequestAutofocus parent is not a instance of ExtendViewGroup parent: " + getParent());
|
|
3512
|
+
//AutoFocusManager.globalRequestFocus(target);
|
|
3513
|
+
final AutoFocusManager af = AutoFocusManager.findAutoFocusManagerFromRoot(this);
|
|
3514
|
+
if (af != null) {
|
|
3515
|
+
af.requestGlobalRequestFocus(this,target,type);
|
|
3516
|
+
}else{
|
|
3517
|
+
Log.e(AutoFocusManager.TAG, "onRequestAutofocus requestFocus on PageRoot af is null");
|
|
3518
|
+
}
|
|
3519
|
+
}
|
|
3520
|
+
}
|
|
3521
|
+
|
|
3522
|
+
public FocusSearchHelper getFirstFocusHelper() {
|
|
3523
|
+
return mFocusSearchHelper;
|
|
3524
|
+
}
|
|
3525
|
+
|
|
3526
|
+
@Override
|
|
3527
|
+
public void setDescendantFocusability(int focusability) {
|
|
3528
|
+
final int last = getDescendantFocusability();
|
|
3529
|
+
super.setDescendantFocusability(focusability);
|
|
3530
|
+
if(LogUtils.isDebug()) {
|
|
3531
|
+
if(focusability == FOCUS_BLOCK_DESCENDANTS) {
|
|
3532
|
+
Log.e(FocusDispatchView.TAG, "block Focus , this:" + ExtendUtil.debugViewLite(this));
|
|
3533
|
+
}else if(last == FOCUS_BLOCK_DESCENDANTS){
|
|
3534
|
+
Log.i(FocusDispatchView.TAG, "release block , this:" + ExtendUtil.debugViewLite(this));
|
|
3535
|
+
}
|
|
3536
|
+
}
|
|
3537
|
+
}
|
|
3538
|
+
|
|
3539
|
+
protected boolean isLayoutAnimationAutoPlay = false;
|
|
3540
|
+
public static class PendingLayoutAnim{
|
|
3541
|
+
final int duration;
|
|
3542
|
+
final Interpolator interpolator;
|
|
3543
|
+
final float delay;
|
|
3544
|
+
|
|
3545
|
+
public PendingLayoutAnim(int duration, Interpolator interpolator, float delay) {
|
|
3546
|
+
this.duration = duration;
|
|
3547
|
+
this.interpolator = interpolator;
|
|
3548
|
+
this.delay = delay;
|
|
3549
|
+
}
|
|
3550
|
+
}
|
|
3551
|
+
PendingLayoutAnim mPendingLayoutAnim = null;
|
|
3552
|
+
|
|
3553
|
+
public boolean startItemFlyInAnimation(PendingLayoutAnim p){
|
|
3554
|
+
if (p == null) {
|
|
3555
|
+
return false;
|
|
3556
|
+
}
|
|
3557
|
+
return startItemFlyInAnimation(p.duration,p.interpolator,p.delay,isLayoutAnimationAutoPlay);
|
|
3558
|
+
}
|
|
3559
|
+
|
|
3560
|
+
|
|
3561
|
+
public boolean startItemFlyInAnimation(int duration,Interpolator interpolator, float delay,boolean autoPlay){
|
|
3562
|
+
if(LogUtils.isDebug()) {
|
|
3563
|
+
Log.d(TAG, "startItemFlyInAnimation getChildCount:" + getChildCount()+",this:"+ExtendUtil.debugViewLite(this));
|
|
3564
|
+
}
|
|
3565
|
+
if(getChildCount() > 0){
|
|
3566
|
+
for(int i = 0; i < getChildCount(); i ++){
|
|
3567
|
+
final ViewHolder holder = getChildViewHolder(getChildAt(i));
|
|
3568
|
+
if(holder != null) {
|
|
3569
|
+
int delayOfIndex = (int) (duration * delay * i);
|
|
3570
|
+
CenterFlyInAnimator.animFlyIn(this, holder,duration,interpolator,delayOfIndex);
|
|
3571
|
+
}
|
|
3572
|
+
}
|
|
3573
|
+
return true;
|
|
3574
|
+
}else{
|
|
3575
|
+
return false;
|
|
3576
|
+
}
|
|
3577
|
+
}
|
|
3578
|
+
|
|
3579
|
+
public void startCustomLayoutAnimation(int type,int duration,int interpolator, float delay,boolean autoPlay){
|
|
3580
|
+
if (LogUtils.isDebug()) {
|
|
3581
|
+
Log.i(TAG, "startCustomLayoutAnimation type:" + type + ",duration:" + duration + ",interpolator:" + interpolator + ",delay:" + delay);
|
|
3582
|
+
Log.i("ZHAOPENG", "startCustomLayoutAnimation type:" + type + ",duration:" + duration + ",interpolator:" + interpolator + ",delay:" + delay);
|
|
3583
|
+
}
|
|
3584
|
+
Interpolator it = null;
|
|
3585
|
+
switch (interpolator){
|
|
3586
|
+
case HippyViewGroupController.INTERPOLATOR_FAST_OUT_LINEAR:
|
|
3587
|
+
it = new FastOutLinearInInterpolator();
|
|
3588
|
+
break;
|
|
3589
|
+
case HippyViewGroupController.INTERPOLATOR_OUT_SLOW_LINEAR:
|
|
3590
|
+
it = new LinearOutSlowInInterpolator();
|
|
3591
|
+
break;
|
|
3592
|
+
case 3:
|
|
3593
|
+
it = new FastOutSlowInInterpolator();
|
|
3594
|
+
break;
|
|
3595
|
+
case 4:
|
|
3596
|
+
it = new DecelerateInterpolator();
|
|
3597
|
+
break;
|
|
3598
|
+
case 5:
|
|
3599
|
+
it = new AccelerateInterpolator();
|
|
3600
|
+
break;
|
|
3601
|
+
}
|
|
3602
|
+
|
|
3603
|
+
Animation animation = null;
|
|
3604
|
+
int anim = -1;
|
|
3605
|
+
switch (type) {
|
|
3606
|
+
case HippyViewGroupController.FADE_IN:
|
|
3607
|
+
anim = R.anim.fade_in;
|
|
3608
|
+
break;
|
|
3609
|
+
case HippyViewGroupController.FADE_OUT:
|
|
3610
|
+
anim = R.anim.fade_out;
|
|
3611
|
+
break;
|
|
3612
|
+
case HippyViewGroupController.LEFT_IN:
|
|
3613
|
+
anim = R.anim.left_in;
|
|
3614
|
+
break;
|
|
3615
|
+
case HippyViewGroupController.LEFT_OUT:
|
|
3616
|
+
anim = R.anim.left_out;
|
|
3617
|
+
break;
|
|
3618
|
+
case HippyViewGroupController.RIGHT_IN:
|
|
3619
|
+
anim = R.anim.right_in;
|
|
3620
|
+
break;
|
|
3621
|
+
case HippyViewGroupController.RIGHT_OUT:
|
|
3622
|
+
anim = R.anim.right_out;
|
|
3623
|
+
break;
|
|
3624
|
+
case HippyViewGroupController.TOP_IN:
|
|
3625
|
+
anim = R.anim.top_in;
|
|
3626
|
+
break;
|
|
3627
|
+
case HippyViewGroupController.TOP_OUT:
|
|
3628
|
+
anim = R.anim.top_out;
|
|
3629
|
+
break;
|
|
3630
|
+
case HippyViewGroupController.BOTTOM_IN:
|
|
3631
|
+
anim = R.anim.bottom_in;
|
|
3632
|
+
break;
|
|
3633
|
+
case HippyViewGroupController.BOTTOM_OUT:
|
|
3634
|
+
anim = R.anim.bottom_out;
|
|
3635
|
+
break;
|
|
3636
|
+
case FastListViewController.LEFT_IN:
|
|
3637
|
+
anim = R.anim.fast_list_layout_fly_left_in;
|
|
3638
|
+
break;
|
|
3639
|
+
case FastListViewController.RIGHT_IN:
|
|
3640
|
+
anim = R.anim.fast_list_layout_fly_right_in;
|
|
3641
|
+
break;
|
|
3642
|
+
case FastListViewController.TOP_IN:
|
|
3643
|
+
anim = R.anim.fast_list_layout_fly_top_in;
|
|
3644
|
+
break;
|
|
3645
|
+
case FastListViewController.BOTTOM_IN:
|
|
3646
|
+
anim = R.anim.fast_list_layout_fly_bottom_in;
|
|
3647
|
+
break;
|
|
3648
|
+
case FastListViewController.CENTER_IN:
|
|
3649
|
+
if(!startItemFlyInAnimation(duration,it, delay, autoPlay) || (getAdapter() != null && getAdapter().getItemCount() < 1)){
|
|
3650
|
+
mPendingLayoutAnim = new PendingLayoutAnim(duration,it,delay);
|
|
3651
|
+
}
|
|
3652
|
+
break;
|
|
3653
|
+
}
|
|
3654
|
+
if(anim != -1){
|
|
3655
|
+
animation = AnimationUtils.loadAnimation(getContext(), anim);
|
|
3656
|
+
}
|
|
3657
|
+
if(animation != null) {
|
|
3658
|
+
|
|
3659
|
+
animation.setDuration(duration);
|
|
3660
|
+
animation.setInterpolator(it);
|
|
3661
|
+
LayoutAnimationController controller = new LayoutAnimationController(animation,delay);
|
|
3662
|
+
setLayoutAnimation(controller);
|
|
3663
|
+
isLayoutAnimationAutoPlay = autoPlay;
|
|
3664
|
+
if (!autoPlay) {
|
|
3665
|
+
scheduleLayoutAnimation();
|
|
3666
|
+
requestLayoutManual();
|
|
3667
|
+
postInvalidate();
|
|
3668
|
+
}
|
|
3669
|
+
}else if(type != FastListViewController.CENTER_IN){
|
|
3670
|
+
Log.e(TAG,"startCustomLayoutAnimation animation is null type:"+type+",duration:"+duration+",interpolator:"+interpolator+",delay:"+delay);
|
|
3671
|
+
}
|
|
3672
|
+
}
|
|
3673
|
+
|
|
3674
|
+
|
|
3675
|
+
RefocusType mRefocusTypeAfterDataChanged = RefocusType.KEEP_POSITION;
|
|
3676
|
+
|
|
3677
|
+
public void setRefocusType(RefocusType type) {
|
|
3678
|
+
mRefocusTypeAfterDataChanged = type;
|
|
3679
|
+
}
|
|
3680
|
+
public RefocusType getRefocusType() {
|
|
3681
|
+
return mRefocusTypeAfterDataChanged;
|
|
3682
|
+
}
|
|
3683
|
+
|
|
3684
|
+
public enum RefocusType{
|
|
3685
|
+
NONE,
|
|
3686
|
+
AT_START,
|
|
3687
|
+
LEGACY,
|
|
3688
|
+
FIRST_VISIBLE,
|
|
3689
|
+
KEEP_POSITION,
|
|
3690
|
+
KEEP_SID,
|
|
3691
|
+
}
|
|
3692
|
+
}
|