@quicktvui/ai 1.0.7 → 1.0.8
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 +27 -4
- package/rules/.cursorrules +27 -4
- package/rules/.github/copilot-instructions.md +27 -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/.windsurfrules +27 -4
- package/rules/AGENTS.md +27 -4
- package/rules/CLAUDE.md +27 -3
- package/rules/GEMINI.md +25 -3
|
@@ -0,0 +1,622 @@
|
|
|
1
|
+
/* Tencent is pleased to support the open source community by making Hippy available.
|
|
2
|
+
* Copyright (C) 2018 THL A29 Limited, a Tencent company. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
package com.tencent.mtt.hippy.views.list;
|
|
17
|
+
|
|
18
|
+
import com.tencent.mtt.hippy.FocusDispatchView;
|
|
19
|
+
import com.tencent.mtt.hippy.HippyRootView;
|
|
20
|
+
import com.tencent.mtt.hippy.annotation.HippyController;
|
|
21
|
+
import com.tencent.mtt.hippy.annotation.HippyControllerProps;
|
|
22
|
+
import com.tencent.mtt.hippy.common.HippyArray;
|
|
23
|
+
import com.tencent.mtt.hippy.common.HippyMap;
|
|
24
|
+
import com.tencent.mtt.hippy.dom.node.NodeProps;
|
|
25
|
+
import com.tencent.mtt.hippy.modules.Promise;
|
|
26
|
+
import com.tencent.mtt.hippy.uimanager.ControllerManager;
|
|
27
|
+
import com.tencent.mtt.hippy.uimanager.HippyViewController;
|
|
28
|
+
import com.tencent.mtt.hippy.uimanager.InternalExtendViewUtil;
|
|
29
|
+
import com.tencent.mtt.hippy.uimanager.ListViewRenderNode;
|
|
30
|
+
import com.tencent.mtt.hippy.uimanager.RenderNode;
|
|
31
|
+
import com.tencent.mtt.hippy.utils.ExtendUtil;
|
|
32
|
+
import com.tencent.mtt.hippy.utils.LogUtils;
|
|
33
|
+
import com.tencent.mtt.hippy.utils.PixelUtil;
|
|
34
|
+
import com.tencent.mtt.supportui.views.recyclerview.BaseLayoutManager;
|
|
35
|
+
import com.tencent.mtt.supportui.views.recyclerview.RecyclerViewBase;
|
|
36
|
+
import com.tencent.mtt.supportui.views.recyclerview.RecyclerViewItem;
|
|
37
|
+
|
|
38
|
+
import android.content.Context;
|
|
39
|
+
import android.graphics.Rect;
|
|
40
|
+
import android.util.Log;
|
|
41
|
+
import android.view.View;
|
|
42
|
+
import android.view.ViewGroup;
|
|
43
|
+
|
|
44
|
+
@SuppressWarnings({"deprecation", "unused"})
|
|
45
|
+
@HippyController(name = HippyListViewController.CLASS_NAME)
|
|
46
|
+
public class HippyListViewController extends HippyViewController<HippyListView> {
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
public static final String CLASS_NAME = "ListView";
|
|
52
|
+
|
|
53
|
+
@Override
|
|
54
|
+
public void onViewDestroy(HippyListView hippyListView) {
|
|
55
|
+
super.onViewDestroy(hippyListView);
|
|
56
|
+
if (hippyListView != null && hippyListView.mListScrollListeners != null) {
|
|
57
|
+
hippyListView.mListScrollListeners.clear();
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
@Override
|
|
62
|
+
protected void addView(ViewGroup parentView, View view, int index) {
|
|
63
|
+
// super.addView(parentView, view, index);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
@Override
|
|
67
|
+
protected void deleteChild(ViewGroup parentView, View childView, int childIndex) {
|
|
68
|
+
// List的childView是RecyclerViewItem类型,不是由Hippy构建的,所以这里需要提前删除RecyclerViewItem的child
|
|
69
|
+
if (childView instanceof RecyclerViewItem) {
|
|
70
|
+
((RecyclerViewItem) childView).removeAllViews();
|
|
71
|
+
}
|
|
72
|
+
// list里,删掉某个条目后,它后面的条目的位置都要减1
|
|
73
|
+
if (childIndex >= 0 && parentView instanceof HippyListView) {
|
|
74
|
+
HippyListView listView = (HippyListView) parentView;
|
|
75
|
+
listView.getRecycler().updateHolderPositionWhenDelete(childIndex);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
@Override
|
|
80
|
+
public int getChildCount(HippyListView viewGroup) {
|
|
81
|
+
return ((HippyListAdapter) viewGroup.getAdapter()).getRecyclerItemCount();
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
@Override
|
|
85
|
+
public View getChildAt(HippyListView viewGroup, int i) {
|
|
86
|
+
return ((HippyListAdapter) viewGroup.getAdapter()).getRecyclerItemView(i);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
@Override
|
|
90
|
+
public void onBatchComplete(HippyListView view) {
|
|
91
|
+
super.onBatchComplete(view);
|
|
92
|
+
if(LogUtils.isDebug()) {
|
|
93
|
+
Log.i(TVRecyclerView.TAG, "onBatchComplete called setListData list:" + ExtendUtil.debugViewLite(view));
|
|
94
|
+
}
|
|
95
|
+
view.setListData();
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
@Override
|
|
99
|
+
protected View createViewImpl(Context context) {
|
|
100
|
+
return new HippyListView(context, BaseLayoutManager.VERTICAL);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
@Override
|
|
104
|
+
protected View createViewImpl(Context context, HippyMap iniProps)
|
|
105
|
+
{
|
|
106
|
+
|
|
107
|
+
if (iniProps != null && iniProps.containsKey("horizontal"))
|
|
108
|
+
{
|
|
109
|
+
|
|
110
|
+
final TVRecyclerView r = new TVRecyclerView(context, BaseLayoutManager.HORIZONTAL);
|
|
111
|
+
if(iniProps.containsKey("disableAdvancedFocusSearch")){
|
|
112
|
+
r.setUseAdvancedFocusSearch(false);
|
|
113
|
+
}
|
|
114
|
+
return r;
|
|
115
|
+
}
|
|
116
|
+
else
|
|
117
|
+
{
|
|
118
|
+
final TVRecyclerView r = new TVRecyclerView(context, BaseLayoutManager.VERTICAL);
|
|
119
|
+
if(iniProps.containsKey("disableAdvancedFocusSearch")){
|
|
120
|
+
r.setUseAdvancedFocusSearch(false);
|
|
121
|
+
}
|
|
122
|
+
return r;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
@Override
|
|
127
|
+
protected void onCreateViewByCache(View view, String type, HippyMap props) {
|
|
128
|
+
super.onCreateViewByCache(view, type, props);
|
|
129
|
+
if (view instanceof TVRecyclerView)
|
|
130
|
+
{
|
|
131
|
+
if(props.containsKey("disableAdvancedFocusSearch")){
|
|
132
|
+
((TVRecyclerView) view).setUseAdvancedFocusSearch(false);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
@Override
|
|
139
|
+
public RenderNode createRenderNode(int id, HippyMap props, String className,
|
|
140
|
+
HippyRootView hippyRootView, ControllerManager controllerManager,
|
|
141
|
+
boolean lazy) {
|
|
142
|
+
return new ListViewRenderNode(id, props, className, hippyRootView, controllerManager, lazy);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
@HippyControllerProps(name = "rowShouldSticky")
|
|
146
|
+
public void setRowShouldSticky(HippyListView view, boolean enable) {
|
|
147
|
+
view.setHasSuspentedItem(enable);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
@HippyControllerProps(name = "onScrollBeginDrag", defaultType = HippyControllerProps.BOOLEAN)
|
|
151
|
+
public void setScrollBeginDragEventEnable(HippyListView view, boolean flag) {
|
|
152
|
+
view.setScrollBeginDragEventEnable(flag);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
@HippyControllerProps(name = "onScrollEndDrag", defaultType = HippyControllerProps.BOOLEAN)
|
|
156
|
+
public void setScrollEndDragEventEnable(HippyListView view, boolean flag) {
|
|
157
|
+
view.setScrollEndDragEventEnable(flag);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
@HippyControllerProps(name = "forceBlockFocusOnFail", defaultType = HippyControllerProps.BOOLEAN, defaultBoolean = true)
|
|
161
|
+
public void setForceBlockFocusOnFail(HippyListView view, boolean enable) {
|
|
162
|
+
if (view instanceof TVRecyclerView) {
|
|
163
|
+
((TVRecyclerView) view).setForceBlockFocusOnFail(enable);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
@HippyControllerProps(name = "onMomentumScrollBegin", defaultType = HippyControllerProps.BOOLEAN)
|
|
168
|
+
public void setMomentumScrollBeginEventEnable(HippyListView view, boolean flag) {
|
|
169
|
+
view.setMomentumScrollBeginEventEnable(flag);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
@HippyControllerProps(name = "onMomentumScrollEnd", defaultType = HippyControllerProps.BOOLEAN)
|
|
173
|
+
public void setMomentumScrollEndEventEnable(HippyListView view, boolean flag) {
|
|
174
|
+
view.setMomentumScrollEndEventEnable(flag);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
@HippyControllerProps(name = "onScrollEnable", defaultType = HippyControllerProps.BOOLEAN)
|
|
178
|
+
public void setOnScrollEventEnable(HippyListView view, boolean flag) {
|
|
179
|
+
view.setOnScrollEventEnable(flag);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
@HippyControllerProps(name = "exposureEventEnabled", defaultType = HippyControllerProps.BOOLEAN)
|
|
183
|
+
public void setExposureEventEnable(HippyListView view, boolean flag) {
|
|
184
|
+
view.setExposureEventEnable(flag);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
@HippyControllerProps(name = "scrollEnabled", defaultType = HippyControllerProps.BOOLEAN, defaultBoolean = true)
|
|
188
|
+
public void setScrollEnable(HippyListView view, boolean flag) {
|
|
189
|
+
view.setScrollEnable(flag);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
@HippyControllerProps(name = "scrollEventThrottle", defaultType = HippyControllerProps.NUMBER, defaultNumber = 30.0D)
|
|
193
|
+
public void setscrollEventThrottle(HippyListView view, int scrollEventThrottle) {
|
|
194
|
+
view.setScrollEventThrottle(scrollEventThrottle);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
@HippyControllerProps(name = "scrollOffset", defaultType = HippyControllerProps.NUMBER)
|
|
198
|
+
public void setScrollOffset(HippyListView view, int scrollOffset) {
|
|
199
|
+
if(view instanceof TVRecyclerView) {
|
|
200
|
+
((TVRecyclerView) view).setScrollOffset(scrollOffset);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
@HippyControllerProps(name = "enableScrollOffsetEvent", defaultType = HippyControllerProps.BOOLEAN, defaultBoolean = false)
|
|
205
|
+
public void setEnableScrollOffsetEvent(HippyListView view,boolean mEnableScrollOffsetEvent) {
|
|
206
|
+
if(view instanceof TVRecyclerView){
|
|
207
|
+
((TVRecyclerView) view).setEnableScrollOffsetEvent(mEnableScrollOffsetEvent);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
@HippyControllerProps(name = "preloadItemNumber")
|
|
212
|
+
public void setPreloadItemNumber(HippyListView view, int preloadItemNumber) {
|
|
213
|
+
RecyclerViewBase.Adapter<?> adapter = view.getAdapter();
|
|
214
|
+
if (adapter instanceof HippyListAdapter) {
|
|
215
|
+
((HippyListAdapter) adapter).setPreloadItemNumber(preloadItemNumber);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
@HippyControllerProps(name = "overScrollEnabled", defaultType = HippyControllerProps.BOOLEAN, defaultBoolean = true)
|
|
220
|
+
public void setOverScrollEnabled(HippyListView view, boolean flag) {
|
|
221
|
+
view.setOverScrollEnabled(flag);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
@HippyControllerProps(name = "initialContentOffset", defaultType = HippyControllerProps.NUMBER, defaultNumber = 0)
|
|
225
|
+
public void setInitialContentOffset(HippyListView view, int offset) {
|
|
226
|
+
view.setInitialContentOffset((int)PixelUtil.dp2px(offset));
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
@HippyControllerProps(name = "listenBoundEvent",defaultType = HippyControllerProps.BOOLEAN,defaultBoolean = false)
|
|
230
|
+
public void setListenBoundEvent(HippyListView view, boolean enable)
|
|
231
|
+
{
|
|
232
|
+
if(view instanceof TVRecyclerView){
|
|
233
|
+
((TVRecyclerView) view).setListenBoundEvent(enable);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
@HippyControllerProps(name = "setUseNegativeLayout",defaultType = HippyControllerProps.BOOLEAN,defaultBoolean = false)
|
|
238
|
+
public void setUseNegativeLayout(HippyListView view, boolean enable)
|
|
239
|
+
{
|
|
240
|
+
if(view instanceof TVRecyclerView){
|
|
241
|
+
((TVRecyclerView) view).setUseNegativeLayout(enable);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
//触底回弹
|
|
246
|
+
@HippyControllerProps(name = "endHintEnabled", defaultType = HippyControllerProps.BOOLEAN, defaultBoolean = true)
|
|
247
|
+
public void setShakeEndEnable(HippyListView view, boolean enable)
|
|
248
|
+
{
|
|
249
|
+
if(view instanceof TVRecyclerView) {
|
|
250
|
+
((TVRecyclerView) view).setShakeEndEnable(enable);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
//焦点抖动
|
|
255
|
+
@HippyControllerProps(name = "endShakeEnabled", defaultType = HippyControllerProps.BOOLEAN, defaultBoolean = true)
|
|
256
|
+
public void setListShakeEnable(HippyListView view, boolean enable)
|
|
257
|
+
{
|
|
258
|
+
if(view instanceof TVRecyclerView) {
|
|
259
|
+
((TVRecyclerView) view).setListShakeSelf(enable);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
@HippyControllerProps(name = "preload")
|
|
264
|
+
public void setPreload(HippyListView view, int preloadItemNumber)
|
|
265
|
+
{
|
|
266
|
+
RecyclerViewBase.Adapter adapter = view.getAdapter();
|
|
267
|
+
if (adapter instanceof HippyListAdapter)
|
|
268
|
+
{
|
|
269
|
+
((HippyListAdapter)adapter).setPreloadItemNumber(preloadItemNumber);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
@HippyControllerProps(name = "layoutTargetPosition",defaultType = HippyControllerProps.NUMBER,defaultNumber = -1)
|
|
274
|
+
public void setLayoutTriggerTargetPosition(HippyListView view ,int position){
|
|
275
|
+
if(view instanceof TVRecyclerView){
|
|
276
|
+
((TVRecyclerView) view).setLayoutTriggerTargetPosition(position);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
@Override
|
|
281
|
+
public void dispatchFunction(HippyListView view, String functionName, HippyArray params, Promise promise) {
|
|
282
|
+
super.dispatchFunction(view, functionName, params, promise);
|
|
283
|
+
if ("getScrollOffset".equals(functionName)) {
|
|
284
|
+
final HippyMap map = new HippyMap();
|
|
285
|
+
map.pushInt("x",view.getOffsetX());
|
|
286
|
+
map.pushInt("y",view.getOffsetY());
|
|
287
|
+
promise.resolve(map);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
@Override
|
|
292
|
+
public void dispatchFunction(HippyListView view, String functionName, HippyArray dataArray)
|
|
293
|
+
{
|
|
294
|
+
super.dispatchFunction(view, functionName, dataArray);
|
|
295
|
+
switch (functionName)
|
|
296
|
+
{
|
|
297
|
+
case "scrollToIndex":
|
|
298
|
+
{
|
|
299
|
+
// list滑动到某个item
|
|
300
|
+
int xIndex = dataArray.getInt(0);
|
|
301
|
+
int yIndex = dataArray.getInt(1);
|
|
302
|
+
boolean animated = dataArray.getBoolean(2);
|
|
303
|
+
int duration = dataArray.getInt(3); //1.2.7 增加滚动时间 ms,animated==true时生效
|
|
304
|
+
int offset = dataArray.getInt(4);
|
|
305
|
+
view.scrollToIndex(xIndex, yIndex, animated,duration,offset);
|
|
306
|
+
break;
|
|
307
|
+
}
|
|
308
|
+
case "setInitPosition" :
|
|
309
|
+
|
|
310
|
+
if(view instanceof TVRecyclerView){
|
|
311
|
+
final HippyMap map = dataArray.getMap(0);
|
|
312
|
+
Log.d("PendingFocus","call setInitPosition view:"+view+",map:"+map);
|
|
313
|
+
((TVRecyclerView) view).setInitPositionInfo(map);
|
|
314
|
+
}
|
|
315
|
+
break;
|
|
316
|
+
case "clearInitPosition" :
|
|
317
|
+
if(view instanceof TVRecyclerView){
|
|
318
|
+
final HippyMap map = dataArray.getMap(0);
|
|
319
|
+
((TVRecyclerView) view).clearInitFocusPosition();
|
|
320
|
+
}
|
|
321
|
+
break;
|
|
322
|
+
case "scrollToContentOffset":
|
|
323
|
+
{
|
|
324
|
+
// list滑动到某个距离
|
|
325
|
+
double xOffset = dataArray.getDouble(0);
|
|
326
|
+
double yOffset = dataArray.getDouble(1);
|
|
327
|
+
boolean animated = dataArray.getBoolean(2);
|
|
328
|
+
int duration = dataArray.getInt(3); //1.2.7 增加滚动时间 ms,animated==true时生效
|
|
329
|
+
view.scrollToContentOffset(xOffset, yOffset, animated,duration);
|
|
330
|
+
break;
|
|
331
|
+
}
|
|
332
|
+
case "scrollToTop":
|
|
333
|
+
{
|
|
334
|
+
view.scrollToTop(null);
|
|
335
|
+
break;
|
|
336
|
+
}
|
|
337
|
+
case "setSelectChildPosition":
|
|
338
|
+
int position = dataArray.getInt(0);
|
|
339
|
+
if(view instanceof TVRecyclerView){
|
|
340
|
+
boolean changeFocusTarget = true;
|
|
341
|
+
if(dataArray.size() > 1){
|
|
342
|
+
changeFocusTarget = dataArray.getBoolean(1);
|
|
343
|
+
}
|
|
344
|
+
((TVRecyclerView) view).setSelectChildPosition(position,changeFocusTarget);
|
|
345
|
+
}
|
|
346
|
+
break;
|
|
347
|
+
case "setTargetFocusChildPosition":
|
|
348
|
+
int pos = dataArray.getInt(0);
|
|
349
|
+
if(view instanceof TVRecyclerView){
|
|
350
|
+
((TVRecyclerView) view).setTargetFocusChildPosition(pos);
|
|
351
|
+
}
|
|
352
|
+
break;
|
|
353
|
+
case "requestChildFocus":
|
|
354
|
+
if(LogUtils.isDebug()) {
|
|
355
|
+
LogUtils.e(FocusDispatchView.TAG, "requestChildFocus view:" + view.getId());
|
|
356
|
+
}
|
|
357
|
+
int p = dataArray.getInt(0);
|
|
358
|
+
if(view instanceof TVRecyclerView){
|
|
359
|
+
final View v = view.findViewByPosition(p);
|
|
360
|
+
if(v != null){
|
|
361
|
+
v.requestFocus();
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
break;
|
|
365
|
+
|
|
366
|
+
case "refreshListData":
|
|
367
|
+
LogUtils.d("hippy","refreshListData called by :"+view.getId());
|
|
368
|
+
view.setListData();
|
|
369
|
+
break;
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
/*** zhaopeng add 20201117 **/
|
|
374
|
+
@HippyControllerProps(name = "focusMemory", defaultType = HippyControllerProps.BOOLEAN, defaultBoolean = true)
|
|
375
|
+
public void setFocusMemory(HippyListView view, boolean enable)
|
|
376
|
+
{
|
|
377
|
+
if(view instanceof TVRecyclerView){
|
|
378
|
+
((TVRecyclerView) view).enableFocusMemory(enable);
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
@HippyControllerProps(name = NodeProps.CLIP_BOUNDS_OUTSET_RECT, defaultType = HippyControllerProps.MAP)
|
|
383
|
+
public void setClipRectOutset(HippyListView view, HippyMap hippyMap){
|
|
384
|
+
if(view instanceof TVRecyclerView){
|
|
385
|
+
((TVRecyclerView) view).setClipOutset(hippyMap.getInt("left"),hippyMap.getInt("top"),hippyMap.getInt("right") ,hippyMap.getInt("bottom"));
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
@HippyControllerProps(name = NodeProps.CLIP_BOUNDS_OUTSET, defaultType = HippyControllerProps.NUMBER,defaultNumber = 0)
|
|
390
|
+
public void setClipRectOutsetAll(HippyListView view, int outSet){
|
|
391
|
+
if(view instanceof TVRecyclerView){
|
|
392
|
+
((TVRecyclerView) view).setClipOutset(outSet,outSet,outSet,outSet);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
@HippyControllerProps(name = "loadMoreState", defaultType = HippyControllerProps.STRING,defaultString = "idle")
|
|
397
|
+
public void setLoadMoreState(HippyListView view, String state){
|
|
398
|
+
// view.setLoadMoreState(state);
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
|
|
402
|
+
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
@HippyControllerProps(name = NodeProps.LIST_VIEW_OVER_SCROLL_LENGTH_START, defaultType = HippyControllerProps.NUMBER,defaultNumber = 0)
|
|
406
|
+
public void setOverScrollStart(HippyListView view, int length){
|
|
407
|
+
if(mOverScrollDecoration == null){
|
|
408
|
+
mOverScrollDecoration = new OverScrollDecoration();
|
|
409
|
+
view.addItemDecoration(mOverScrollDecoration);
|
|
410
|
+
}
|
|
411
|
+
mOverScrollDecoration.start = length;
|
|
412
|
+
view.requestLayout();
|
|
413
|
+
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
@HippyControllerProps(name = NodeProps.LIST_VIEW_OVER_SCROLL_LENGTH_END, defaultType = HippyControllerProps.NUMBER,defaultNumber = 0)
|
|
417
|
+
public void setOverScrollEnd(HippyListView view, int length){
|
|
418
|
+
if(mOverScrollDecoration == null){
|
|
419
|
+
mOverScrollDecoration = new OverScrollDecoration();
|
|
420
|
+
view.addItemDecoration(mOverScrollDecoration);
|
|
421
|
+
}
|
|
422
|
+
mOverScrollDecoration.end = length;
|
|
423
|
+
|
|
424
|
+
view.requestLayout();
|
|
425
|
+
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
@HippyControllerProps(name = "setSelectChildPosition", defaultType = HippyControllerProps.NUMBER,defaultNumber = 0)
|
|
429
|
+
public void setSelectChildPosition(HippyListView view, int position){
|
|
430
|
+
if(view instanceof TVRecyclerView){
|
|
431
|
+
((TVRecyclerView) view).setSelectChildPosition(position);
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
@HippyControllerProps(name = "initPosition", defaultType = HippyControllerProps.MAP)
|
|
436
|
+
public void setScrollTargetPosition(HippyListView view, HippyMap map){
|
|
437
|
+
|
|
438
|
+
Log.d("PendingFocus","initPosition view:"+view+",map:"+map);
|
|
439
|
+
if(view instanceof TVRecyclerView){
|
|
440
|
+
((TVRecyclerView) view).setInitPositionInfo(map);
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
@HippyControllerProps(name = "initScroll", defaultType = HippyControllerProps.ARRAY)
|
|
445
|
+
public void setScrollPosition(HippyListView view, HippyArray array){
|
|
446
|
+
|
|
447
|
+
Log.d("","initScroll view:"+view+",array:"+array);
|
|
448
|
+
if(view instanceof TVRecyclerView){
|
|
449
|
+
if(array.size() > 0){
|
|
450
|
+
|
|
451
|
+
int pos = array.getInt(0);
|
|
452
|
+
int offset = 0;
|
|
453
|
+
if(array.size() > 1){
|
|
454
|
+
offset = array.getInt(1);
|
|
455
|
+
}
|
|
456
|
+
if(pos > -1) {
|
|
457
|
+
((TVRecyclerView) view).scrollToPosition(pos, offset);
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
|
|
465
|
+
@HippyControllerProps(name = "initFocusPositionAfterLayout", defaultType = HippyControllerProps.NUMBER,defaultNumber = -1)
|
|
466
|
+
public void setInitFocusAfterLayout(HippyListView view, int position){
|
|
467
|
+
if(view instanceof TVRecyclerView){
|
|
468
|
+
((TVRecyclerView) view).setInitFocusPositionAfterLayout(position);
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
//此处vue是怎么传值的
|
|
475
|
+
@HippyControllerProps(name = "blockFocusOnFail", defaultType = HippyControllerProps.BOOLEAN ,defaultBoolean = false)
|
|
476
|
+
public void setBlockFocusOnFail(HippyListView view, HippyMap hippyMap){
|
|
477
|
+
if(view instanceof TVRecyclerView) {
|
|
478
|
+
((TVRecyclerView) view).setBlockFocusOnFail(new int[InternalExtendViewUtil.FOCUS_BLOCK_DIRECTION_ALL]);
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
//此处vue是怎么传值的
|
|
483
|
+
@HippyControllerProps(name = "listenFocusSearchOnFail", defaultType = HippyControllerProps.BOOLEAN ,defaultBoolean = false)
|
|
484
|
+
public void setListenFocusSearchOnFail(HippyListView view, boolean listen){
|
|
485
|
+
if(view instanceof TVRecyclerView) {
|
|
486
|
+
((TVRecyclerView) view).setListenFocusSearchOnFail(listen);
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
@HippyControllerProps(name = "makeChildVisibleType", defaultType = HippyControllerProps.STRING)
|
|
491
|
+
public void setMakeChildVisibleType(HippyListView view, String type){
|
|
492
|
+
if(view instanceof TVRecyclerView) {
|
|
493
|
+
if ("normal".equals(type)) {
|
|
494
|
+
((TVRecyclerView) view).setRequestChildOnScreenType(TVRecyclerView.REQUEST_CHILD_ON_SCREEN_TYPE_ANDROID);
|
|
495
|
+
} else if("none".equals(type)){
|
|
496
|
+
((TVRecyclerView) view).setRequestChildOnScreenType(TVRecyclerView.REQUEST_CHILD_ON_SCREEN_TYPE_NONE);
|
|
497
|
+
} else {
|
|
498
|
+
((TVRecyclerView) view).setRequestChildOnScreenType(TVRecyclerView.REQUEST_CHILD_ON_SCREEN_TYPE_CENTER);
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
@HippyControllerProps(name = "makeChildVisibleClampBackward", defaultType = HippyControllerProps.NUMBER)
|
|
504
|
+
public void setRequestChildOnScreenClampBackward(HippyListView view,int clampBackward) {
|
|
505
|
+
if(view instanceof TVRecyclerView){
|
|
506
|
+
((TVRecyclerView) view).setRequestChildOnScreenType(TVRecyclerView.REQUEST_CHILD_ON_SCREEN_TYPE_ANDROID);
|
|
507
|
+
((TVRecyclerView) view).setRequestChildOnScreenClampBackward(clampBackward);
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
@HippyControllerProps(name = "makeChildVisibleClampForward", defaultType = HippyControllerProps.NUMBER)
|
|
512
|
+
public void setRequestChildOnScreenClampForward(HippyListView view,int clampForward) {
|
|
513
|
+
if(view instanceof TVRecyclerView){
|
|
514
|
+
((TVRecyclerView) view).setRequestChildOnScreenType(TVRecyclerView.REQUEST_CHILD_ON_SCREEN_TYPE_ANDROID);
|
|
515
|
+
((TVRecyclerView) view).setRequestChildOnScreenClampForward(clampForward);
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
@HippyControllerProps(name = "scrollThresholdHorizontal", defaultType = HippyControllerProps.NUMBER)
|
|
521
|
+
public void setScrollThresholdHorizontal(HippyListView view,int threshold) {
|
|
522
|
+
if(view instanceof TVRecyclerView){
|
|
523
|
+
((TVRecyclerView) view).setScrollThresholdHorizontal(threshold);
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
@HippyControllerProps(name = "scrollThresholdVertical", defaultType = HippyControllerProps.NUMBER)
|
|
528
|
+
public void setScrollThresholdVertical(HippyListView view,int threshold) {
|
|
529
|
+
if(view instanceof TVRecyclerView){
|
|
530
|
+
((TVRecyclerView) view).setScrollThresholdVertical(threshold);
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
@HippyControllerProps(name = "scrollYLesserReferenceValue", defaultType = HippyControllerProps.NUMBER)
|
|
535
|
+
public void setScrollYLesserReferenceValue(HippyListView view,int value) {
|
|
536
|
+
if(view instanceof TVRecyclerView){
|
|
537
|
+
((TVRecyclerView) view).setScrollYLesserReferenceValue(value);
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
@HippyControllerProps(name = "scrollYGreaterReferenceValue", defaultType = HippyControllerProps.NUMBER)
|
|
542
|
+
public void setScrollYGreaterReferenceValue(HippyListView view,int value) {
|
|
543
|
+
if(view instanceof TVRecyclerView){
|
|
544
|
+
((TVRecyclerView) view).setScrollYGreaterReferenceValue(value);
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
@HippyControllerProps(name = "shakePreCheckNumber", defaultType = HippyControllerProps.NUMBER, defaultNumber = 2)
|
|
549
|
+
public void setShakePreCheckNumber(HippyListView view,int shakePreCheckNumber) {
|
|
550
|
+
if(view instanceof TVRecyclerView){
|
|
551
|
+
((TVRecyclerView) view).setShakePreCheckNumber(shakePreCheckNumber);
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
@HippyControllerProps(name = "blankItemDecoration", defaultType = HippyControllerProps.ARRAY)
|
|
556
|
+
public void setBlankItemDecoration(HippyListView view,HippyArray array) {
|
|
557
|
+
if(view instanceof TVRecyclerView){
|
|
558
|
+
((TVRecyclerView) view).setBlankItemDecoration(array);
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
|
|
563
|
+
|
|
564
|
+
private OverScrollDecoration mOverScrollDecoration;
|
|
565
|
+
|
|
566
|
+
private static class OverScrollDecoration extends RecyclerViewBase.ItemDecoration{
|
|
567
|
+
|
|
568
|
+
public int start;
|
|
569
|
+
public int end;
|
|
570
|
+
|
|
571
|
+
@Override
|
|
572
|
+
public void getItemOffsets(Rect outRect, int itemPosition, RecyclerViewBase parent) {
|
|
573
|
+
super.getItemOffsets(outRect, itemPosition, parent);
|
|
574
|
+
|
|
575
|
+
if(parent instanceof TVRecyclerView){
|
|
576
|
+
|
|
577
|
+
final boolean isVertical = ((TVRecyclerView) parent).getOrientation() == BaseLayoutManager.VERTICAL;
|
|
578
|
+
|
|
579
|
+
if(itemPosition == 0){
|
|
580
|
+
if(isVertical){
|
|
581
|
+
outRect.top = start;
|
|
582
|
+
}else{
|
|
583
|
+
outRect.left = start;
|
|
584
|
+
}
|
|
585
|
+
}else if(itemPosition == parent.getAdapter().getItemCount() -1){
|
|
586
|
+
if(isVertical){
|
|
587
|
+
outRect.bottom = end;
|
|
588
|
+
}else{
|
|
589
|
+
outRect.right = end;
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
@HippyControllerProps(name = "enableSelectOnFocus", defaultType = HippyControllerProps.BOOLEAN, defaultBoolean = false)
|
|
599
|
+
public void setEnableSelectOnFocus(HippyListView view, boolean flag)
|
|
600
|
+
{
|
|
601
|
+
if(view instanceof TVRecyclerView) {
|
|
602
|
+
((TVRecyclerView) view).setEnableSelectOnFocus(flag);
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
@HippyControllerProps(name = "useAdvancedFocusSearch", defaultType = HippyControllerProps.BOOLEAN)
|
|
606
|
+
public void setUseAdvancedFocusSearch(HippyListView view, boolean flag)
|
|
607
|
+
{
|
|
608
|
+
if(view instanceof TVRecyclerView) {
|
|
609
|
+
((TVRecyclerView) view).setUseAdvancedFocusSearch(flag);
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
@HippyControllerProps(name = "checkScrollOffsetOnStateChanged", defaultType = HippyControllerProps.BOOLEAN)
|
|
614
|
+
public void setCheckScrollOffsetOnStateChanged(HippyListView view,boolean b){
|
|
615
|
+
if(view instanceof TVRecyclerView) {
|
|
616
|
+
((TVRecyclerView) view).setCheckScrollOffsetOnStateChanged(b);
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
|
|
621
|
+
|
|
622
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/* Tencent is pleased to support the open source community by making Hippy available.
|
|
2
|
+
* Copyright (C) 2018 THL A29 Limited, a Tencent company. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
package com.tencent.mtt.hippy.views.list;
|
|
17
|
+
|
|
18
|
+
@SuppressWarnings({"unused"})
|
|
19
|
+
public interface HippyRecycler {
|
|
20
|
+
|
|
21
|
+
//恢复默认的时候使用
|
|
22
|
+
void resetProps();
|
|
23
|
+
|
|
24
|
+
//replace id 的时候清除不需要的属性
|
|
25
|
+
void clear();
|
|
26
|
+
|
|
27
|
+
void onResetBeforeCache();
|
|
28
|
+
|
|
29
|
+
void notifySaveState();
|
|
30
|
+
void notifyRestoreState();
|
|
31
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/* Tencent is pleased to support the open source community by making Hippy available.
|
|
2
|
+
* Copyright (C) 2018 THL A29 Limited, a Tencent company. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
package com.tencent.mtt.hippy.views.list;
|
|
17
|
+
|
|
18
|
+
import com.tencent.mtt.hippy.uimanager.ListItemRenderNode;
|
|
19
|
+
|
|
20
|
+
public interface IRecycleItemTypeChange {
|
|
21
|
+
|
|
22
|
+
void onRecycleItemTypeChanged(int oldType, int newType, ListItemRenderNode listItemNode);
|
|
23
|
+
}
|