@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.
Files changed (204) hide show
  1. package/package.json +1 -1
  2. package/rules/.clinerules +27 -4
  3. package/rules/.cursorrules +27 -4
  4. package/rules/.github/copilot-instructions.md +27 -4
  5. package/rules/.source/hippy/extend_views/CoverFlowHorizontalView.java +203 -0
  6. package/rules/.source/hippy/extend_views/CoverFlowVerticalView.java +203 -0
  7. package/rules/.source/hippy/extend_views/CoverFlowViewController.java +195 -0
  8. package/rules/.source/hippy/extend_views/EngineRootView.java +125 -0
  9. package/rules/.source/hippy/extend_views/ExtendTag.java +83 -0
  10. package/rules/.source/hippy/extend_views/FocusSearchHelper.java +124 -0
  11. package/rules/.source/hippy/extend_views/IRecyclerItemView.java +12 -0
  12. package/rules/.source/hippy/extend_views/JSEventHandleView.java +5 -0
  13. package/rules/.source/hippy/extend_views/MarqueeRelayManager.java +133 -0
  14. package/rules/.source/hippy/extend_views/MarqueeRelayTextView.java +211 -0
  15. package/rules/.source/hippy/extend_views/ProgressBarView.java +83 -0
  16. package/rules/.source/hippy/extend_views/ProgressBarViewController.java +145 -0
  17. package/rules/.source/hippy/extend_views/SeekBarView.java +104 -0
  18. package/rules/.source/hippy/extend_views/SeekBarViewController.java +218 -0
  19. package/rules/.source/hippy/extend_views/StateImageView.java +149 -0
  20. package/rules/.source/hippy/extend_views/StateImageViewController.java +34 -0
  21. package/rules/.source/hippy/extend_views/TVButtonView.java +314 -0
  22. package/rules/.source/hippy/extend_views/TVButtonViewController.java +89 -0
  23. package/rules/.source/hippy/extend_views/TVTextView.java +684 -0
  24. package/rules/.source/hippy/extend_views/TVViewActor.java +811 -0
  25. package/rules/.source/hippy/extend_views/TVViewActorHost.java +6 -0
  26. package/rules/.source/hippy/extend_views/TVViewActor/346/216/245/345/205/245.md +66 -0
  27. package/rules/.source/hippy/extend_views/TemplateUtil.java +336 -0
  28. package/rules/.source/hippy/extend_views/TextButtonNode.java +47 -0
  29. package/rules/.source/hippy/extend_views/TextViewController.java +377 -0
  30. package/rules/.source/hippy/extend_views/fastlist/CenterFlyInAnimator.java +96 -0
  31. package/rules/.source/hippy/extend_views/fastlist/ChildOnScreenScroller.java +548 -0
  32. package/rules/.source/hippy/extend_views/fastlist/ClonedViewTag.java +17 -0
  33. package/rules/.source/hippy/extend_views/fastlist/EventDeliverer.java +55 -0
  34. package/rules/.source/hippy/extend_views/fastlist/FastAdapter.java +4683 -0
  35. package/rules/.source/hippy/extend_views/fastlist/FastAdapterUtil.java +982 -0
  36. package/rules/.source/hippy/extend_views/fastlist/FastFlexNode.java +48 -0
  37. package/rules/.source/hippy/extend_views/fastlist/FastFlexView.java +873 -0
  38. package/rules/.source/hippy/extend_views/fastlist/FastFlexViewController.java +130 -0
  39. package/rules/.source/hippy/extend_views/fastlist/FastItemNode.java +67 -0
  40. package/rules/.source/hippy/extend_views/fastlist/FastItemView.java +306 -0
  41. package/rules/.source/hippy/extend_views/fastlist/FastItemViewController.java +106 -0
  42. package/rules/.source/hippy/extend_views/fastlist/FastListModule.java +95 -0
  43. package/rules/.source/hippy/extend_views/fastlist/FastListNode.java +90 -0
  44. package/rules/.source/hippy/extend_views/fastlist/FastListView.java +2466 -0
  45. package/rules/.source/hippy/extend_views/fastlist/FastListViewController.java +1038 -0
  46. 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
  47. package/rules/.source/hippy/extend_views/fastlist/FastPendingView.java +47 -0
  48. package/rules/.source/hippy/extend_views/fastlist/ItemDecorations.java +71 -0
  49. package/rules/.source/hippy/extend_views/fastlist/ItemStoreNode.java +64 -0
  50. package/rules/.source/hippy/extend_views/fastlist/ItemStoreView.java +13 -0
  51. package/rules/.source/hippy/extend_views/fastlist/ItemStoreViewController.java +45 -0
  52. package/rules/.source/hippy/extend_views/fastlist/ListItemHolder.java +7 -0
  53. package/rules/.source/hippy/extend_views/fastlist/ListViewControlProp.java +41 -0
  54. package/rules/.source/hippy/extend_views/fastlist/MouseRecycleView.java +509 -0
  55. package/rules/.source/hippy/extend_views/fastlist/OnFastItemClickListener.java +12 -0
  56. package/rules/.source/hippy/extend_views/fastlist/OnFastItemFocusChangeListener.java +9 -0
  57. package/rules/.source/hippy/extend_views/fastlist/OnFastScrollStateChangedListener.java +7 -0
  58. package/rules/.source/hippy/extend_views/fastlist/PendingListNode.java +18 -0
  59. package/rules/.source/hippy/extend_views/fastlist/PendingViewController.java +13 -0
  60. package/rules/.source/hippy/extend_views/fastlist/PostHandlerView.java +6 -0
  61. package/rules/.source/hippy/extend_views/fastlist/PostTaskHolder.java +20 -0
  62. package/rules/.source/hippy/extend_views/fastlist/ReplaceChildController.java +105 -0
  63. package/rules/.source/hippy/extend_views/fastlist/ReplaceChildView.java +312 -0
  64. package/rules/.source/hippy/extend_views/fastlist/TVListView.java +3692 -0
  65. package/rules/.source/hippy/extend_views/fastlist/TemplateCodeParser.java +247 -0
  66. package/rules/.source/hippy/extend_views/fastlist/Utils.java +572 -0
  67. package/rules/.source/hippy/extend_views/fastlist/ViewTag.java +317 -0
  68. package/rules/.source/hippy/extend_views/fastlist/VirtualListView.java +8 -0
  69. package/rules/.source/hippy/extend_views/fastlist/diff/FastListDataBindingHelper.java +320 -0
  70. package/rules/.source/hippy/extend_views/fastlist/diff/KeyDiffHelper.java +289 -0
  71. package/rules/.source/hippy/extend_views/fastlist/diff/NoKeyDiffHelper.java +278 -0
  72. package/rules/.source/hippy/extend_views/tag/FontTag.java +53 -0
  73. package/rules/.source/hippy/extend_views/tag/HtmlTag.java +191 -0
  74. package/rules/.source/hippy/extend_views/tag/HtmlTagHandler.java +185 -0
  75. package/rules/.source/hippy/extend_views/tag/SpanTag.java +160 -0
  76. package/rules/.source/hippy/extend_views/tag/TextFontSpan.java +102 -0
  77. package/rules/.source/hippy/extend_views/waterfall/Chunk.java +10 -0
  78. package/rules/.source/hippy/extend_views/waterfall/ChunkGroup.java +5 -0
  79. package/rules/.source/hippy/extend_views/waterfall/Section.java +4 -0
  80. package/rules/.source/hippy/extend_views/waterfall/Tabs.java +5 -0
  81. package/rules/.source/hippy/extend_views/waterfall/WaterfallUtils.java +26 -0
  82. package/rules/.source/hippy/hippy_uimanager/ControllerHolder.java +30 -0
  83. package/rules/.source/hippy/hippy_uimanager/ControllerManager.java +651 -0
  84. package/rules/.source/hippy/hippy_uimanager/ControllerRegistry.java +102 -0
  85. package/rules/.source/hippy/hippy_uimanager/ControllerUpdateManger.java +252 -0
  86. package/rules/.source/hippy/hippy_uimanager/CustomControllerHelper.java +425 -0
  87. package/rules/.source/hippy/hippy_uimanager/DiffUtils.java +526 -0
  88. package/rules/.source/hippy/hippy_uimanager/ExtendViewGroup.java +36 -0
  89. package/rules/.source/hippy/hippy_uimanager/HippyCustomViewCreator.java +29 -0
  90. package/rules/.source/hippy/hippy_uimanager/HippyGroupController.java +83 -0
  91. package/rules/.source/hippy/hippy_uimanager/HippyViewBase.java +27 -0
  92. package/rules/.source/hippy/hippy_uimanager/HippyViewController.java +2189 -0
  93. package/rules/.source/hippy/hippy_uimanager/HippyViewEvent.java +52 -0
  94. package/rules/.source/hippy/hippy_uimanager/IHippyZIndexViewGroup.java +24 -0
  95. package/rules/.source/hippy/hippy_uimanager/InternalExtendViewUtil.java +395 -0
  96. package/rules/.source/hippy/hippy_uimanager/ListItemRenderNode.java +143 -0
  97. package/rules/.source/hippy/hippy_uimanager/ListViewRenderNode.java +44 -0
  98. package/rules/.source/hippy/hippy_uimanager/MatrixUtil.java +470 -0
  99. package/rules/.source/hippy/hippy_uimanager/NativeGestureDispatcher.java +349 -0
  100. package/rules/.source/hippy/hippy_uimanager/NativeGestureProcessor.java +188 -0
  101. package/rules/.source/hippy/hippy_uimanager/PullFooterRenderNode.java +43 -0
  102. package/rules/.source/hippy/hippy_uimanager/PullHeaderRenderNode.java +43 -0
  103. package/rules/.source/hippy/hippy_uimanager/RenderManager.java +304 -0
  104. package/rules/.source/hippy/hippy_uimanager/RenderNode.java +533 -0
  105. package/rules/.source/hippy/hippy_uimanager/StateView.java +17 -0
  106. package/rules/.source/hippy/hippy_uimanager/TransformUtil.java +125 -0
  107. package/rules/.source/hippy/hippy_uimanager/ViewGroupDrawingOrderHelper.java +108 -0
  108. package/rules/.source/hippy/hippy_uimanager/ViewStateProvider.java +10 -0
  109. package/rules/.source/hippy/hippy_views/audioview/AudioPlayManager.java +457 -0
  110. package/rules/.source/hippy/hippy_views/audioview/AudioView.java +225 -0
  111. package/rules/.source/hippy/hippy_views/audioview/AudioViewController.java +135 -0
  112. package/rules/.source/hippy/hippy_views/common/CommonBackgroundDrawable.java +58 -0
  113. package/rules/.source/hippy/hippy_views/common/CommonBorder.java +37 -0
  114. package/rules/.source/hippy/hippy_views/custom/HippyCustomPropsController.java +61 -0
  115. package/rules/.source/hippy/hippy_views/hippylist/HippyRecyclerListAdapter.java +399 -0
  116. package/rules/.source/hippy/hippy_views/hippylist/HippyRecyclerView.java +378 -0
  117. package/rules/.source/hippy/hippy_views/hippylist/HippyRecyclerViewController.java +187 -0
  118. package/rules/.source/hippy/hippy_views/hippylist/HippyRecyclerViewHolder.java +39 -0
  119. package/rules/.source/hippy/hippy_views/hippylist/HippyRecyclerViewWrapper.java +134 -0
  120. package/rules/.source/hippy/hippy_views/hippylist/NodePositionHelper.java +55 -0
  121. package/rules/.source/hippy/hippy_views/hippylist/PreloadHelper.java +54 -0
  122. package/rules/.source/hippy/hippy_views/hippylist/PullFooterEventHelper.java +61 -0
  123. package/rules/.source/hippy/hippy_views/hippylist/PullHeaderEventHelper.java +127 -0
  124. package/rules/.source/hippy/hippy_views/hippylist/RecyclerViewEventHelper.java +394 -0
  125. package/rules/.source/hippy/hippy_views/image/HippyContentDrawable.java +113 -0
  126. package/rules/.source/hippy/hippy_views/image/HippyImageView.java +1608 -0
  127. package/rules/.source/hippy/hippy_views/image/HippyImageViewController.java +382 -0
  128. package/rules/.source/hippy/hippy_views/image/IImageStateListener.java +7 -0
  129. package/rules/.source/hippy/hippy_views/list/ChildOnScreenScroller.java +255 -0
  130. package/rules/.source/hippy/hippy_views/list/HippyListAdapter.java +647 -0
  131. package/rules/.source/hippy/hippy_views/list/HippyListItemView.java +162 -0
  132. package/rules/.source/hippy/hippy_views/list/HippyListItemViewController.java +45 -0
  133. package/rules/.source/hippy/hippy_views/list/HippyListView.java +915 -0
  134. package/rules/.source/hippy/hippy_views/list/HippyListViewController.java +622 -0
  135. package/rules/.source/hippy/hippy_views/list/HippyRecycler.java +31 -0
  136. package/rules/.source/hippy/hippy_views/list/IRecycleItemTypeChange.java +23 -0
  137. package/rules/.source/hippy/hippy_views/list/ItemDecorations.java +70 -0
  138. package/rules/.source/hippy/hippy_views/list/NegativeLongKeyFlinger.java +156 -0
  139. package/rules/.source/hippy/hippy_views/list/NodeHolder.java +34 -0
  140. package/rules/.source/hippy/hippy_views/list/RecycleViewFlinger.java +126 -0
  141. package/rules/.source/hippy/hippy_views/list/TVRecyclerView.java +2070 -0
  142. package/rules/.source/hippy/hippy_views/list/TVSingleLineListView.java +15 -0
  143. package/rules/.source/hippy/hippy_views/modal/HippyModalHostManager.java +102 -0
  144. package/rules/.source/hippy/hippy_views/modal/HippyModalHostView.java +597 -0
  145. package/rules/.source/hippy/hippy_views/modal/ModalHostHelper.java +46 -0
  146. package/rules/.source/hippy/hippy_views/modal/ModalStyleNode.java +34 -0
  147. package/rules/.source/hippy/hippy_views/modal/RequestCloseEvent.java +32 -0
  148. package/rules/.source/hippy/hippy_views/modal/ShowEvent.java +31 -0
  149. package/rules/.source/hippy/hippy_views/navigator/Navigator.java +126 -0
  150. package/rules/.source/hippy/hippy_views/navigator/NavigatorController.java +120 -0
  151. package/rules/.source/hippy/hippy_views/refresh/HippyPullFooterView.java +47 -0
  152. package/rules/.source/hippy/hippy_views/refresh/HippyPullFooterViewController.java +65 -0
  153. package/rules/.source/hippy/hippy_views/refresh/HippyPullHeaderView.java +39 -0
  154. package/rules/.source/hippy/hippy_views/refresh/HippyPullHeaderViewController.java +104 -0
  155. package/rules/.source/hippy/hippy_views/refresh/RefreshWrapper.java +237 -0
  156. package/rules/.source/hippy/hippy_views/refresh/RefreshWrapperController.java +62 -0
  157. package/rules/.source/hippy/hippy_views/refresh/RefreshWrapperItemController.java +39 -0
  158. package/rules/.source/hippy/hippy_views/refresh/RefreshWrapperItemView.java +26 -0
  159. package/rules/.source/hippy/hippy_views/scroll/HippyHorizontalScrollView.java +500 -0
  160. package/rules/.source/hippy/hippy_views/scroll/HippyOnScrollHelper.java +39 -0
  161. package/rules/.source/hippy/hippy_views/scroll/HippyScrollView.java +46 -0
  162. package/rules/.source/hippy/hippy_views/scroll/HippyScrollViewController.java +178 -0
  163. package/rules/.source/hippy/hippy_views/scroll/HippyScrollViewEventHelper.java +92 -0
  164. package/rules/.source/hippy/hippy_views/scroll/HippyVerticalScrollView.java +522 -0
  165. package/rules/.source/hippy/hippy_views/text/HippyTextView.java +512 -0
  166. package/rules/.source/hippy/hippy_views/text/HippyTextViewController.java +77 -0
  167. package/rules/.source/hippy/hippy_views/textinput/HippyTextInput.java +668 -0
  168. package/rules/.source/hippy/hippy_views/textinput/HippyTextInputController.java +528 -0
  169. package/rules/.source/hippy/hippy_views/textinput/TextInputNode.java +115 -0
  170. package/rules/.source/hippy/hippy_views/videoview/APEZProvider.java +287 -0
  171. package/rules/.source/hippy/hippy_views/videoview/APKExpansionSupport.java +82 -0
  172. package/rules/.source/hippy/hippy_views/videoview/PivotPoint.java +13 -0
  173. package/rules/.source/hippy/hippy_views/videoview/ScalableType.java +34 -0
  174. package/rules/.source/hippy/hippy_views/videoview/ScalableVideoView.java +265 -0
  175. package/rules/.source/hippy/hippy_views/videoview/ScaleManager.java +191 -0
  176. package/rules/.source/hippy/hippy_views/videoview/Size.java +19 -0
  177. package/rules/.source/hippy/hippy_views/videoview/VideoHippyView.java +917 -0
  178. package/rules/.source/hippy/hippy_views/videoview/VideoHippyViewController.java +236 -0
  179. package/rules/.source/hippy/hippy_views/videoview/ZipResourceFile.java +427 -0
  180. package/rules/.source/hippy/hippy_views/view/CardRootView.java +28 -0
  181. package/rules/.source/hippy/hippy_views/view/CustomLayoutView.java +10 -0
  182. package/rules/.source/hippy/hippy_views/view/CustomNodeView.java +5 -0
  183. package/rules/.source/hippy/hippy_views/view/DialogViewGroup.java +113 -0
  184. package/rules/.source/hippy/hippy_views/view/HippyViewGroup.java +2042 -0
  185. package/rules/.source/hippy/hippy_views/view/HippyViewGroupController.java +583 -0
  186. package/rules/.source/hippy/hippy_views/view/WindowRoot.java +5 -0
  187. package/rules/.source/hippy/hippy_views/viewpager/HippyViewPager.java +308 -0
  188. package/rules/.source/hippy/hippy_views/viewpager/HippyViewPagerAdapter.java +148 -0
  189. package/rules/.source/hippy/hippy_views/viewpager/HippyViewPagerController.java +246 -0
  190. package/rules/.source/hippy/hippy_views/viewpager/HippyViewPagerItem.java +27 -0
  191. package/rules/.source/hippy/hippy_views/viewpager/HippyViewPagerItemController.java +42 -0
  192. package/rules/.source/hippy/hippy_views/viewpager/ViewPagerPageChangeListener.java +114 -0
  193. package/rules/.source/hippy/hippy_views/viewpager/event/HippyPageItemExposureEvent.java +40 -0
  194. package/rules/.source/hippy/hippy_views/viewpager/event/HippyPageScrollEvent.java +43 -0
  195. package/rules/.source/hippy/hippy_views/viewpager/event/HippyPageScrollStateChangedEvent.java +42 -0
  196. package/rules/.source/hippy/hippy_views/viewpager/event/HippyPageSelectedEvent.java +42 -0
  197. package/rules/.source/hippy/hippy_views/webview/HippyWebView.java +160 -0
  198. package/rules/.source/hippy/hippy_views/webview/HippyWebViewBridge.java +20 -0
  199. package/rules/.source/hippy/hippy_views/webview/HippyWebViewController.java +103 -0
  200. package/rules/.source/hippy/hippy_views/webview/HippyWebViewInner.java +77 -0
  201. package/rules/.windsurfrules +27 -4
  202. package/rules/AGENTS.md +27 -4
  203. package/rules/CLAUDE.md +27 -3
  204. package/rules/GEMINI.md +25 -3
@@ -0,0 +1,70 @@
1
+ package com.tencent.mtt.hippy.views.list;
2
+
3
+ import android.graphics.Rect;
4
+
5
+ import android.support.annotation.NonNull;
6
+
7
+ import com.tencent.mtt.supportui.views.recyclerview.RecyclerViewBase;
8
+
9
+ public class ItemDecorations {
10
+
11
+ public static class SimpleBetweenItem extends RecyclerViewBase.ItemDecoration {
12
+
13
+ final int itemSpace;
14
+ final boolean horizontal;
15
+
16
+ public SimpleBetweenItem(int itemSpace,boolean horizontal) {
17
+ this.itemSpace = itemSpace;
18
+ this.horizontal = horizontal;
19
+ }
20
+
21
+ public SimpleBetweenItem(int itemSpace) {
22
+ this.itemSpace = itemSpace;
23
+ this.horizontal = true;
24
+ }
25
+
26
+ @Override
27
+ public void getItemOffsets(@NonNull Rect outRect, int itemPosition, @NonNull RecyclerViewBase parent) {
28
+ super.getItemOffsets(outRect, itemPosition,parent);
29
+ if(horizontal) {
30
+ outRect.right = itemSpace;
31
+ }else{
32
+ outRect.bottom = itemSpace;
33
+ }
34
+ }
35
+ }
36
+
37
+
38
+ public static class ListEndBlank extends RecyclerViewBase.ItemDecoration{
39
+ final int blank;
40
+ final int orientation;
41
+
42
+
43
+ public ListEndBlank(int blank, int orientation) {
44
+ this.blank = blank;
45
+ this.orientation = orientation;
46
+ }
47
+
48
+ public ListEndBlank(int orientation) {
49
+ this(100,orientation);
50
+ }
51
+
52
+ @Override
53
+ public void getItemOffsets(@NonNull Rect outRect,int itemPosition, @NonNull RecyclerViewBase parent) {
54
+ super.getItemOffsets(outRect, itemPosition,parent);
55
+ if(itemPosition > 0) {
56
+ if (orientation == RecyclerViewBase.HORIZONTAL) {
57
+ if(itemPosition >= parent.getAdapter().getItemCount()/ - 1){
58
+ outRect.right = blank;
59
+ }
60
+ } else {
61
+ if(itemPosition >= parent.getAdapter().getItemCount() - 1){
62
+ outRect.bottom = blank;
63
+ }
64
+ }
65
+ }
66
+ }
67
+ }
68
+
69
+
70
+ }
@@ -0,0 +1,156 @@
1
+ package com.tencent.mtt.hippy.views.list;
2
+
3
+ import android.os.Build;
4
+ import android.os.SystemClock;
5
+ import android.util.Log;
6
+ import android.view.KeyEvent;
7
+ import android.view.View;
8
+
9
+
10
+ import android.support.v7.widget.LinearLayoutManager;
11
+
12
+ import com.tencent.mtt.hippy.BuildConfig;
13
+ import com.tencent.mtt.hippy.utils.LogUtils;
14
+
15
+
16
+ /**
17
+ * @author zhaopeng
18
+ * @version 1.0
19
+ * @title
20
+ * @description
21
+ * @company
22
+ * @created 2017/8/22
23
+ * @changeRecord [修改记录] <br/>
24
+ * 2017/8/22 :created
25
+ */
26
+
27
+
28
+ public class NegativeLongKeyFlinger extends RecycleViewFlinger {
29
+
30
+ public static final String TAG = "LongKeyFlinger";
31
+
32
+ private int time_interval = 500;
33
+
34
+ // private int time_interval = 1000;
35
+
36
+ int flingSpeed = 500;
37
+
38
+
39
+ public void setFlingSpeed(int flingSpeed) {
40
+ this.flingSpeed = flingSpeed;
41
+ }
42
+
43
+ public void setKeyReleaseTimeInterval(int time_interval) {
44
+ this.time_interval = Math.min(100,time_interval);
45
+ }
46
+
47
+ public NegativeLongKeyFlinger(IRecyclerView flyableView) {
48
+ this(flyableView,150);
49
+ }
50
+
51
+ public NegativeLongKeyFlinger(IRecyclerView flyableView,int interval) {
52
+ super(flyableView);
53
+ setKeyReleaseTimeInterval(interval);
54
+ }
55
+
56
+
57
+ @Override
58
+ public boolean dispatchKeyEventPreIme(KeyEvent event) {
59
+ if(time_interval < 0){
60
+ return false;
61
+ }
62
+
63
+
64
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
65
+ if(mIFlyableView.isInLayout()){
66
+ if(BuildConfig.DEBUG) {
67
+ Log.e(TAG, "return : isInLayout");
68
+ }
69
+ return true;
70
+ }
71
+ }
72
+
73
+ final long now = SystemClock.uptimeMillis();
74
+ int vector = 0;
75
+ if(isVertical){
76
+ if(event.getKeyCode() == KeyEvent.KEYCODE_DPAD_UP ){
77
+ vector = -1;
78
+ }else if(event.getKeyCode() == KeyEvent.KEYCODE_DPAD_DOWN){
79
+ vector = 1;
80
+ }
81
+ }else{
82
+ if(event.getKeyCode() == KeyEvent.KEYCODE_DPAD_LEFT ){
83
+ vector = -1;
84
+ }else if( event.getKeyCode() == KeyEvent.KEYCODE_DPAD_RIGHT){
85
+ vector = 1;
86
+ }
87
+ }
88
+ if(vector == 0){
89
+ //不是方向键
90
+ return false;
91
+ }
92
+
93
+
94
+ if(event.getAction() == KeyEvent.ACTION_DOWN){
95
+ if(BuildConfig.DEBUG){
96
+ }
97
+ //长按
98
+ if(mLongPress == null){
99
+ // if(BuildConfig.DEBUG) {
100
+ // Log.e(TAG, "初始key事件 : ");
101
+ // }
102
+ mLongPress = new LongPress(now);
103
+ return false;
104
+ }else{
105
+ //长按过程中,只处理一定时间间隔内的请求
106
+ if( mLongPress.down(now).pressedTime < time_interval){
107
+ // if(BuildConfig.DEBUG) {
108
+ // Log.e(TAG, "丢弃key事件 : "+mLongPress);
109
+ // }
110
+ return true;
111
+ }
112
+
113
+ mLongPress.up(now);
114
+
115
+ // if(BuildConfig.DEBUG) {
116
+ // Log.e(TAG, " 长按事件,执行Fling : "+mLongPress);
117
+ // }
118
+
119
+ return false;
120
+ }
121
+
122
+
123
+ }else if(event.getAction() == KeyEvent.ACTION_UP) {
124
+ if (mLongPress != null) {
125
+ //抬起
126
+ mLongPress.up(now);
127
+
128
+
129
+ // if (BuildConfig.DEBUG) {
130
+ // Log.e(TAG, "按键抬起 ");
131
+ // }
132
+ //单键
133
+ mLongPress = null;
134
+ return false;
135
+
136
+ }
137
+ }
138
+ return false;
139
+
140
+ }
141
+
142
+ @Override
143
+ public View focusSearch(LinearLayoutManager lm, View focused, int direction) {
144
+ // if(LogUtils.isDebug()){
145
+ // Log.d(TAG,"FocusSearch called longKey:"+isOnLongKeyPressed());
146
+ // }
147
+ return null;
148
+ }
149
+
150
+ public boolean isOnLongKeyPressed(){
151
+ return mLongPress != null && mLongPress.pressedTime > time_interval;
152
+ }
153
+
154
+
155
+
156
+ }
@@ -0,0 +1,34 @@
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.RenderNode;
19
+ import com.tencent.mtt.supportui.views.recyclerview.ContentHolder;
20
+ import com.tencent.mtt.supportui.views.recyclerview.RecyclerViewBase;
21
+
22
+ public class NodeHolder extends ContentHolder {
23
+
24
+ public RenderNode mBindNode;
25
+ public boolean isCreated = true;
26
+
27
+ @Override
28
+ public void inTraversals(int traversalPurpose, int position, RecyclerViewBase recyclerView) {
29
+ super.inTraversals(traversalPurpose, position, recyclerView);
30
+ if (recyclerView != null) {
31
+ recyclerView.handleInTraversal(traversalPurpose, position, mContentView);
32
+ }
33
+ }
34
+ }
@@ -0,0 +1,126 @@
1
+ package com.tencent.mtt.hippy.views.list;
2
+
3
+ import android.view.KeyEvent;
4
+ import android.view.View;
5
+ import android.view.animation.Interpolator;
6
+
7
+
8
+ import android.support.v7.widget.LinearLayoutManager;
9
+
10
+
11
+
12
+ /**
13
+ * @author zhaopeng
14
+ * @version 1.0
15
+ * @title
16
+ * @description
17
+ * @company
18
+ * @created 2017/8/9
19
+ * @changeRecord [修改记录] <br/>
20
+ * 2017/8/9 :created
21
+ */
22
+
23
+
24
+ public abstract class RecycleViewFlinger {
25
+
26
+ public static final String TAG = "SmoothFlinger";
27
+
28
+ boolean isVertical = true;
29
+
30
+ public long lastKeyTime;
31
+
32
+
33
+ Interpolator mInterpolator;
34
+
35
+
36
+ long fullFlingDuration = 1 * 1000;
37
+
38
+ long singleKeyDuration = 100;
39
+
40
+ LongPress mLongPress;
41
+
42
+ IRecyclerView mIFlyableView;
43
+
44
+ float flingSmooth = 1;
45
+
46
+ public RecycleViewFlinger(IRecyclerView view) {
47
+ this.mIFlyableView = view;
48
+ }
49
+
50
+ public void setVertical(boolean isVertical) {
51
+ this.isVertical = isVertical;
52
+ }
53
+
54
+ public abstract boolean dispatchKeyEventPreIme(KeyEvent event);
55
+
56
+ public abstract View focusSearch(LinearLayoutManager tvListView, View focused, int direction);
57
+
58
+
59
+ static class LongPress{
60
+
61
+ static int FLING_VELOCITY = 1000;
62
+
63
+ private long mLastKeyDownTime = 0;
64
+
65
+ final long startTime;
66
+
67
+ long pressedTime;
68
+
69
+ long downDeltaTime = 0;
70
+
71
+ boolean discarded = false;
72
+
73
+ LongPress(long startTime) {
74
+ this.startTime = startTime;
75
+ mLastKeyDownTime = startTime;
76
+ }
77
+
78
+ LongPress down(long now){
79
+ downDeltaTime = (now - mLastKeyDownTime);
80
+
81
+ pressedTime += downDeltaTime;
82
+
83
+ mLastKeyDownTime = now;
84
+ return this;
85
+ }
86
+
87
+ public long getPressedTime() {
88
+ return pressedTime;
89
+ }
90
+
91
+ long getLastDownTimeDelta(){
92
+ return downDeltaTime;
93
+ }
94
+
95
+
96
+ int getFlingVelocity(){
97
+ return FLING_VELOCITY;
98
+ }
99
+
100
+ LongPress up(long now){
101
+ reset();
102
+ discarded = true;
103
+ return this;
104
+ }
105
+
106
+ void reset(){
107
+ pressedTime = 0;
108
+ }
109
+
110
+ @Override
111
+ public String toString() {
112
+ return "LongPress{" +
113
+ ", startTime=" + startTime +
114
+ ", pressedTime=" + pressedTime +
115
+ ", downDeltaTime=" + downDeltaTime +
116
+ '}';
117
+ }
118
+ }
119
+
120
+ public interface IRecyclerView{
121
+ boolean isInLayout();
122
+ }
123
+
124
+
125
+
126
+ }