@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,237 @@
|
|
|
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.refresh;
|
|
17
|
+
|
|
18
|
+
import android.animation.Animator;
|
|
19
|
+
import android.animation.ObjectAnimator;
|
|
20
|
+
import android.content.Context;
|
|
21
|
+
import android.view.MotionEvent;
|
|
22
|
+
import android.view.View;
|
|
23
|
+
import android.view.animation.AccelerateInterpolator;
|
|
24
|
+
import com.tencent.mtt.hippy.common.HippyMap;
|
|
25
|
+
import com.tencent.mtt.hippy.uimanager.HippyViewEvent;
|
|
26
|
+
import com.tencent.mtt.hippy.utils.PixelUtil;
|
|
27
|
+
import com.tencent.mtt.hippy.views.list.HippyListView;
|
|
28
|
+
import com.tencent.mtt.hippy.views.view.HippyViewGroup;
|
|
29
|
+
|
|
30
|
+
@SuppressWarnings({"deprecation", "unused"})
|
|
31
|
+
public class RefreshWrapper extends HippyViewGroup {
|
|
32
|
+
|
|
33
|
+
RefreshWrapperItemView mRefreshWrapperItemView;
|
|
34
|
+
View mContentView;
|
|
35
|
+
|
|
36
|
+
float mTansY = -1;
|
|
37
|
+
float mStartTransY = 0;
|
|
38
|
+
float mStartY = 0;
|
|
39
|
+
float mStartDownY = -1;
|
|
40
|
+
float mStartX = 0;
|
|
41
|
+
|
|
42
|
+
RefreshState mState = RefreshState.Init;
|
|
43
|
+
|
|
44
|
+
int mBounceTime = 300;
|
|
45
|
+
protected boolean mScrollEventEnable = true;
|
|
46
|
+
protected int mScrollEventThrottle = 400; // 400ms最多回调一次
|
|
47
|
+
private long mLastScrollEventTimeStamp = -1;
|
|
48
|
+
|
|
49
|
+
public void refreshComplected() {
|
|
50
|
+
bounceToHead(0);
|
|
51
|
+
mState = RefreshState.Init;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
public void setTime(int time) {
|
|
55
|
+
this.mBounceTime = time;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
enum RefreshState {
|
|
59
|
+
Init,
|
|
60
|
+
Loading,
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
public RefreshWrapper(Context context) {
|
|
64
|
+
super(context);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
void setSTranslationY(float y) {
|
|
69
|
+
if (mRefreshWrapperItemView != null) {
|
|
70
|
+
mRefreshWrapperItemView.setTranslationY(y > 0 ? y : 0);
|
|
71
|
+
}
|
|
72
|
+
if (mContentView != null) {
|
|
73
|
+
mContentView.setTranslationY(y > 0 ? y : 0);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
public void setOnScrollEventEnable(boolean enable) {
|
|
78
|
+
mScrollEventEnable = enable;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
public void setScrollEventThrottle(int scrollEventThrottle) {
|
|
82
|
+
mScrollEventThrottle = scrollEventThrottle;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
void bounceToHead(float toTransY) {
|
|
86
|
+
if (mContentView != null && mRefreshWrapperItemView != null) {
|
|
87
|
+
Animator contentAnimator = ObjectAnimator
|
|
88
|
+
.ofFloat(mContentView, "TranslationY", mContentView.getTranslationY(), toTransY);
|
|
89
|
+
contentAnimator.setDuration(mBounceTime);
|
|
90
|
+
contentAnimator.setInterpolator(new AccelerateInterpolator());
|
|
91
|
+
Animator wrapperAnimator = ObjectAnimator.ofFloat(mRefreshWrapperItemView, "TranslationY",
|
|
92
|
+
mRefreshWrapperItemView.getTranslationY(),
|
|
93
|
+
toTransY);
|
|
94
|
+
wrapperAnimator.setInterpolator(new AccelerateInterpolator());
|
|
95
|
+
wrapperAnimator.setDuration(mBounceTime);
|
|
96
|
+
contentAnimator.start();
|
|
97
|
+
wrapperAnimator.start();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
float getCompactScrollY() {
|
|
103
|
+
if (mContentView instanceof HippyListView) {
|
|
104
|
+
HippyListView hippyListView = (HippyListView) mContentView;
|
|
105
|
+
return hippyListView.getOffsetY();
|
|
106
|
+
}
|
|
107
|
+
return mContentView.getScrollY();
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
@Override
|
|
112
|
+
public boolean dispatchTouchEvent(MotionEvent event) {
|
|
113
|
+
float nowMoveY = event.getRawY();
|
|
114
|
+
float nowMoveX = event.getRawX();
|
|
115
|
+
if (mContentView != null && mRefreshWrapperItemView != null) {
|
|
116
|
+
switch (event.getAction()) {
|
|
117
|
+
case MotionEvent.ACTION_DOWN:
|
|
118
|
+
mStartY = event.getRawY();
|
|
119
|
+
mStartX = event.getRawX(); //记录首次DOWN的位置
|
|
120
|
+
mStartTransY = mRefreshWrapperItemView.getTranslationY();
|
|
121
|
+
|
|
122
|
+
break;
|
|
123
|
+
case MotionEvent.ACTION_MOVE:
|
|
124
|
+
|
|
125
|
+
if (nowMoveY - mStartY > 0) {
|
|
126
|
+
float scrollY = getCompactScrollY();
|
|
127
|
+
|
|
128
|
+
if (scrollY == 0) {
|
|
129
|
+
if (mStartDownY == -1) {
|
|
130
|
+
mStartDownY = nowMoveY;
|
|
131
|
+
} else {
|
|
132
|
+
mTansY = (nowMoveY - mStartDownY) / 3;
|
|
133
|
+
setSTranslationY(mTansY + mStartTransY);
|
|
134
|
+
//把y的偏移值返回给js侧,这里把偏移值转换为负数,方便前端理解
|
|
135
|
+
sendOnScrollEvent(-mTansY);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
//如果垂直滚动得比水平滚动得多,就认为当前用户手势是一个上下拉,RefreshWrapper就把事件吃掉,RefreshWrapper里面的孩子就收不到事件了
|
|
139
|
+
//否则RefreshWrapper里面的孩子能收到事件,ViewPager还能继续处理左右滚动事件。
|
|
140
|
+
if (Math.abs(nowMoveX - mStartX) < Math.abs((nowMoveY - mStartY))) {
|
|
141
|
+
return true;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
} else {
|
|
145
|
+
if (mState == RefreshState.Loading) {
|
|
146
|
+
float dis = nowMoveY - mStartY;
|
|
147
|
+
if (mRefreshWrapperItemView.getTranslationY() > 0) {
|
|
148
|
+
setSTranslationY(mStartTransY + dis);
|
|
149
|
+
//如果垂直滚动得比水平滚动得多,就认为当前用户手势是一个上下拉,RefreshWrapper就把事件吃掉,RefreshWrapper里面的孩子就收不到事件了
|
|
150
|
+
//否则RefreshWrapper里面的孩子能收到事件,ViewPager还能继续处理左右滚动事件。
|
|
151
|
+
if (Math.abs(nowMoveX - mStartX) < Math.abs(dis)) {
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
break;
|
|
158
|
+
case MotionEvent.ACTION_UP:
|
|
159
|
+
if (mState == RefreshState.Init) {
|
|
160
|
+
if (mTansY < mRefreshWrapperItemView.getHeight()
|
|
161
|
+
&& mRefreshWrapperItemView.getTranslationY() > 0) {
|
|
162
|
+
bounceToHead(0);
|
|
163
|
+
//如果是水平滚动,不发送cancle事件。
|
|
164
|
+
if (Math.abs(nowMoveX - mStartX) < Math.abs((nowMoveY - mStartY))) {
|
|
165
|
+
sendCancelEvent(event);
|
|
166
|
+
}
|
|
167
|
+
} else if (mTansY > mRefreshWrapperItemView.getHeight()) {
|
|
168
|
+
startRefresh();
|
|
169
|
+
//如果是水平滚动,不发送cancle事件。
|
|
170
|
+
if (Math.abs(nowMoveX - mStartX) < Math.abs((nowMoveY - mStartY))) {
|
|
171
|
+
sendCancelEvent(event);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
} else if (mState == RefreshState.Loading) {
|
|
175
|
+
if (mRefreshWrapperItemView.getTranslationY() > mRefreshWrapperItemView.getHeight()) {
|
|
176
|
+
startRefresh();
|
|
177
|
+
//如果是水平滚动,不发送cancle事件。
|
|
178
|
+
if (Math.abs(nowMoveX - mStartX) < Math.abs((nowMoveY - mStartY))) {
|
|
179
|
+
sendCancelEvent(event);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
mStartDownY = -1;
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
return super.dispatchTouchEvent(event);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
public void sendCancelEvent(MotionEvent event) {
|
|
194
|
+
MotionEvent motionEvent = MotionEvent.obtain(event);
|
|
195
|
+
motionEvent.setAction(MotionEvent.ACTION_CANCEL);
|
|
196
|
+
mContentView.dispatchTouchEvent(motionEvent);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
public void startRefresh() {
|
|
201
|
+
mTansY = -1;
|
|
202
|
+
bounceToHead(mRefreshWrapperItemView.getHeight());
|
|
203
|
+
mState = RefreshState.Loading;
|
|
204
|
+
new HippyViewEvent("onRefresh").send(this, null);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
public void sendOnScrollEvent(float y) {
|
|
208
|
+
if (mScrollEventEnable) {
|
|
209
|
+
long currTime = System.currentTimeMillis();
|
|
210
|
+
if (currTime - mLastScrollEventTimeStamp < mScrollEventThrottle) {
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
new HippyViewEvent("onScroll").send(this, generateScrollEvent(y));
|
|
214
|
+
mLastScrollEventTimeStamp = currTime;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
private HippyMap generateScrollEvent(float y) {
|
|
219
|
+
HippyMap contentOffset = new HippyMap();
|
|
220
|
+
contentOffset.pushDouble("x", PixelUtil.px2dp(0));
|
|
221
|
+
contentOffset.pushDouble("y", PixelUtil.px2dp(y));
|
|
222
|
+
HippyMap event = new HippyMap();
|
|
223
|
+
event.pushMap("contentOffset", contentOffset);
|
|
224
|
+
return event;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
@Override
|
|
228
|
+
public void addView(View child, int index) {
|
|
229
|
+
if (child instanceof RefreshWrapperItemView) {
|
|
230
|
+
mRefreshWrapperItemView = (RefreshWrapperItemView) child;
|
|
231
|
+
} else {
|
|
232
|
+
mContentView = child;
|
|
233
|
+
}
|
|
234
|
+
super.addView(child, index);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
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.refresh;
|
|
17
|
+
|
|
18
|
+
import android.content.Context;
|
|
19
|
+
import android.view.View;
|
|
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.uimanager.HippyGroupController;
|
|
24
|
+
|
|
25
|
+
@SuppressWarnings({"unused"})
|
|
26
|
+
@HippyController(name = "RefreshWrapper")
|
|
27
|
+
public class RefreshWrapperController extends HippyGroupController<RefreshWrapper> {
|
|
28
|
+
|
|
29
|
+
final String RefreshComplected = "refreshComplected";
|
|
30
|
+
final String StartRefresh = "startRefresh";
|
|
31
|
+
|
|
32
|
+
@Override
|
|
33
|
+
protected View createViewImpl(Context context) {
|
|
34
|
+
return new RefreshWrapper(context);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
@HippyControllerProps(name = "bounceTime", defaultType = HippyControllerProps.NUMBER, defaultNumber = 300)
|
|
38
|
+
public void bounceTime(RefreshWrapper wrapper, int time) {
|
|
39
|
+
wrapper.setTime(time);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@HippyControllerProps(name = "onScrollEnable", defaultType = HippyControllerProps.BOOLEAN)
|
|
43
|
+
public void setOnScrollEventEnable(RefreshWrapper wrapper, boolean flag) {
|
|
44
|
+
wrapper.setOnScrollEventEnable(flag);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@HippyControllerProps(name = "scrollEventThrottle", defaultType = HippyControllerProps.NUMBER, defaultNumber = 30.0D)
|
|
48
|
+
public void setscrollEventThrottle(RefreshWrapper wrapper, int scrollEventThrottle) {
|
|
49
|
+
wrapper.setScrollEventThrottle(scrollEventThrottle);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
@Override
|
|
53
|
+
public void dispatchFunction(RefreshWrapper view, String functionName, HippyArray var) {
|
|
54
|
+
super.dispatchFunction(view, functionName, var);
|
|
55
|
+
|
|
56
|
+
if (RefreshComplected.equals(functionName)) {
|
|
57
|
+
view.refreshComplected();
|
|
58
|
+
} else if (StartRefresh.equals(functionName)) {
|
|
59
|
+
view.startRefresh();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
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.refresh;
|
|
17
|
+
|
|
18
|
+
import android.content.Context;
|
|
19
|
+
import android.view.View;
|
|
20
|
+
import com.tencent.mtt.hippy.annotation.HippyController;
|
|
21
|
+
import com.tencent.mtt.hippy.uimanager.ControllerRegistry;
|
|
22
|
+
import com.tencent.mtt.hippy.views.view.HippyViewGroupController;
|
|
23
|
+
|
|
24
|
+
@SuppressWarnings({"unused"})
|
|
25
|
+
@HippyController(name = "RefreshWrapperItemView")
|
|
26
|
+
public class RefreshWrapperItemController extends HippyViewGroupController {
|
|
27
|
+
|
|
28
|
+
@Override
|
|
29
|
+
protected View createViewImpl(Context context) {
|
|
30
|
+
return new RefreshWrapperItemView(context);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@Override
|
|
34
|
+
public void updateLayout(int id, int x, int y, int width, int height,
|
|
35
|
+
ControllerRegistry componentHolder) {
|
|
36
|
+
y = y - height;
|
|
37
|
+
super.updateLayout(id, x, y, width, height, componentHolder);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
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.refresh;
|
|
17
|
+
|
|
18
|
+
import android.content.Context;
|
|
19
|
+
import com.tencent.mtt.hippy.views.view.HippyViewGroup;
|
|
20
|
+
|
|
21
|
+
public class RefreshWrapperItemView extends HippyViewGroup {
|
|
22
|
+
|
|
23
|
+
public RefreshWrapperItemView(Context context) {
|
|
24
|
+
super(context);
|
|
25
|
+
}
|
|
26
|
+
}
|