@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,308 @@
|
|
|
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.viewpager;
|
|
17
|
+
|
|
18
|
+
import com.tencent.mtt.hippy.HippyInstanceContext;
|
|
19
|
+
import com.tencent.mtt.hippy.modules.Promise;
|
|
20
|
+
import com.tencent.mtt.hippy.uimanager.HippyViewBase;
|
|
21
|
+
import com.tencent.mtt.hippy.uimanager.NativeGestureDispatcher;
|
|
22
|
+
import com.tencent.mtt.hippy.utils.I18nUtil;
|
|
23
|
+
import com.tencent.mtt.hippy.utils.LogUtils;
|
|
24
|
+
import com.tencent.mtt.supportui.views.viewpager.ViewPager;
|
|
25
|
+
|
|
26
|
+
import android.content.Context;
|
|
27
|
+
import android.os.Handler;
|
|
28
|
+
import android.os.Looper;
|
|
29
|
+
import android.text.TextUtils;
|
|
30
|
+
import android.view.MotionEvent;
|
|
31
|
+
import android.view.View;
|
|
32
|
+
|
|
33
|
+
@SuppressWarnings({"unused"})
|
|
34
|
+
public class HippyViewPager extends ViewPager implements HippyViewBase {
|
|
35
|
+
|
|
36
|
+
private static final String TAG = "HippyViewPager";
|
|
37
|
+
|
|
38
|
+
private final Runnable mMeasureAndLayout = new Runnable() {
|
|
39
|
+
@Override
|
|
40
|
+
public void run() {
|
|
41
|
+
measure(View.MeasureSpec.makeMeasureSpec(getWidth(), View.MeasureSpec.EXACTLY),
|
|
42
|
+
View.MeasureSpec.makeMeasureSpec(getHeight(), View.MeasureSpec.EXACTLY));
|
|
43
|
+
layout(getLeft(), getTop(), getRight(), getBottom());
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
private NativeGestureDispatcher mGestureDispatcher;
|
|
49
|
+
private boolean mFirstUpdateChild = true;
|
|
50
|
+
private final boolean mReNotifyOnAttach = false;
|
|
51
|
+
private ViewPagerPageChangeListener mPageListener;
|
|
52
|
+
private final Handler mHandler = new Handler(Looper.getMainLooper());
|
|
53
|
+
private Promise mCallBackPromise;
|
|
54
|
+
|
|
55
|
+
private void init(Context context,boolean enableTransformer) {
|
|
56
|
+
setCallPageChangedOnFirstLayout(true);
|
|
57
|
+
setEnableReLayoutOnAttachToWindow(false);
|
|
58
|
+
|
|
59
|
+
mPageListener = new ViewPagerPageChangeListener(this);
|
|
60
|
+
setOnPageChangeListener(mPageListener);
|
|
61
|
+
setAdapter(createAdapter(context));
|
|
62
|
+
setLeftDragOutSizeEnabled(false);
|
|
63
|
+
setRightDragOutSizeEnabled(false);
|
|
64
|
+
|
|
65
|
+
if (I18nUtil.isRTL()) {
|
|
66
|
+
setRotationY(180f);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
//zhaopeng add
|
|
70
|
+
if(enableTransformer) {
|
|
71
|
+
setPageTransformer(new FadePageTransform());
|
|
72
|
+
setAutoScrollCustomDuration(300);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
@Override
|
|
78
|
+
public void setAutoScrollCustomDuration(int duration) {
|
|
79
|
+
super.setAutoScrollCustomDuration(duration);
|
|
80
|
+
if(duration < 1){
|
|
81
|
+
setPageTransformer(null);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
//zhaopeng add
|
|
86
|
+
public static final class FadePageTransform implements PageTransformer {
|
|
87
|
+
|
|
88
|
+
private static final float MIN_ALPHA = 0;
|
|
89
|
+
|
|
90
|
+
@Override
|
|
91
|
+
public void transformPage(View page, float position) {
|
|
92
|
+
LogUtils.v(TAG,"transformPage page:"+page+",position:"+position);
|
|
93
|
+
if (position < -1 || position > 1) {
|
|
94
|
+
page.setAlpha(0);
|
|
95
|
+
} else {
|
|
96
|
+
if (-1 <= position && position < 0) {
|
|
97
|
+
page.setAlpha(1 + position - MIN_ALPHA * position);
|
|
98
|
+
} else if (0 < position && position <= 1) {
|
|
99
|
+
page.setAlpha(1 - position + MIN_ALPHA * position);
|
|
100
|
+
} else {
|
|
101
|
+
page.setAlpha(1);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
@Override
|
|
108
|
+
public void onViewAdded(View child) {
|
|
109
|
+
if (I18nUtil.isRTL()) {
|
|
110
|
+
child.setRotationY(180f);
|
|
111
|
+
}
|
|
112
|
+
super.onViewAdded(child);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
public HippyViewPager(Context context, boolean isVertical,boolean enableTransform)
|
|
116
|
+
{
|
|
117
|
+
super(context, isVertical);
|
|
118
|
+
init(context,enableTransform);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
public HippyViewPager(Context context)
|
|
122
|
+
{
|
|
123
|
+
super(context);
|
|
124
|
+
init(context,true);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
public void setCallBackPromise(Promise promise) {
|
|
128
|
+
mCallBackPromise = promise;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
public Promise getCallBackPromise() {
|
|
132
|
+
return mCallBackPromise;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
protected HippyViewPagerAdapter createAdapter(Context context) {
|
|
136
|
+
return new HippyViewPagerAdapter((HippyInstanceContext) context, this);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
public void setInitialPageIndex(int index) {
|
|
140
|
+
getAdapter().setInitPageIndex(index);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
public void setChildCountAndUpdate(final int childCount) {
|
|
145
|
+
LogUtils.d(TAG, "doUpdateInternal: " + hashCode() + ", childCount=" + childCount);
|
|
146
|
+
if (mFirstUpdateChild) {
|
|
147
|
+
setFirstLayoutParameter(true);
|
|
148
|
+
mFirstUpdateChild = false;
|
|
149
|
+
}
|
|
150
|
+
getAdapter().setChildSize(childCount);
|
|
151
|
+
//getWindowToken() == null执行这个操作,onAttachToWindow就不需要了。
|
|
152
|
+
getAdapter().notifyDataSetChanged();
|
|
153
|
+
triggerRequestLayout();
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
protected void addViewToAdapter(HippyViewPagerItem view, int postion) {
|
|
157
|
+
HippyViewPagerAdapter adapter = getAdapter();
|
|
158
|
+
if (adapter != null) {
|
|
159
|
+
adapter.addView(view, postion);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
protected int getAdapterViewSize() {
|
|
164
|
+
HippyViewPagerAdapter adapter = getAdapter();
|
|
165
|
+
if (adapter != null) {
|
|
166
|
+
return adapter.getItemViewSize();
|
|
167
|
+
}
|
|
168
|
+
return 0;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
protected void removeViewFromAdapter(HippyViewPagerItem view) {
|
|
172
|
+
HippyViewPagerAdapter adapter = getAdapter();
|
|
173
|
+
if (adapter != null) {
|
|
174
|
+
adapter.removeView(view);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
public View getViewFromAdapter(int currentItem) {
|
|
179
|
+
HippyViewPagerAdapter adapter = getAdapter();
|
|
180
|
+
if (adapter != null) {
|
|
181
|
+
return adapter.getViewAt(currentItem);
|
|
182
|
+
}
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
@Override
|
|
187
|
+
public HippyViewPagerAdapter getAdapter() {
|
|
188
|
+
return (HippyViewPagerAdapter) super.getAdapter();
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
@Override
|
|
192
|
+
public boolean onInterceptTouchEvent(MotionEvent ev) {
|
|
193
|
+
if (!isScrollEnabled()) {
|
|
194
|
+
return false;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
return super.onInterceptTouchEvent(ev);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
@Override
|
|
201
|
+
public boolean onTouchEvent(MotionEvent ev) {
|
|
202
|
+
if (!isScrollEnabled()) {
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
return super.onTouchEvent(ev);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
@Override
|
|
210
|
+
protected void onAttachedToWindow() {
|
|
211
|
+
super.onAttachedToWindow();
|
|
212
|
+
LogUtils.d(TAG, "onAttachedToWindow: " + hashCode() + ", childCount=" + getChildCount()
|
|
213
|
+
+ ", repopulate=" + mNeedRepopulate
|
|
214
|
+
+ ", renotifyOnAttach=" + mReNotifyOnAttach);
|
|
215
|
+
|
|
216
|
+
/*
|
|
217
|
+
* hippy 在setChildCountAndUpdate打开,执行了
|
|
218
|
+
* if (mReNotifyOnAttach)
|
|
219
|
+
* {
|
|
220
|
+
* getAdapter().notifyDataSetChanged();
|
|
221
|
+
* mReNotifyOnAttach = false;
|
|
222
|
+
* }
|
|
223
|
+
*/
|
|
224
|
+
// 9.6在supportui已经把windowToken的检查过滤去掉了,所以这里应该关掉
|
|
225
|
+
/*
|
|
226
|
+
* if (mNeedRepopulate) //这个是是在supportUI工程里面poplate的时候设置的。再没有上树的情况下
|
|
227
|
+
* {
|
|
228
|
+
* mNeedRepopulate = false;
|
|
229
|
+
* triggerRequestLayout();
|
|
230
|
+
* postInvalidate();
|
|
231
|
+
* }
|
|
232
|
+
*/
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
@Override
|
|
236
|
+
protected void onDetachedFromWindow() {
|
|
237
|
+
super.onDetachedFromWindow();
|
|
238
|
+
LogUtils.d(TAG, "onDetachedFromWindow: " + hashCode() + ", childCount=" + getChildCount()
|
|
239
|
+
+ ", repopulate=" + mNeedRepopulate
|
|
240
|
+
+ ", renotifyOnAttach=" + mReNotifyOnAttach);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
public void switchToPage(int item, boolean animated) {
|
|
244
|
+
LogUtils.d(TAG,
|
|
245
|
+
"switchToPage: " + hashCode() + ", item=" + item + ", animated=" + animated);
|
|
246
|
+
if (getAdapter().getCount() == 0) // viewpager的children没有初始化好的时候,直接设置mInitialPageIndex
|
|
247
|
+
{
|
|
248
|
+
LogUtils.d(TAG, "switchToPage: getAdapter().getCount() == 0");
|
|
249
|
+
} else {
|
|
250
|
+
if (getCurrentItem() != item) // 如果和当前位置一样,就不进行switch
|
|
251
|
+
{
|
|
252
|
+
if (isSettling()) {
|
|
253
|
+
// 如果仍然在滑动中,重置一下状态
|
|
254
|
+
setScrollingCacheEnabled(false);
|
|
255
|
+
mScroller.abortAnimation();
|
|
256
|
+
int oldX = getScrollX();
|
|
257
|
+
int oldY = getScrollY();
|
|
258
|
+
int x = mScroller.getCurrX();
|
|
259
|
+
int y = mScroller.getCurrY();
|
|
260
|
+
if (oldX != x || oldY != y) {
|
|
261
|
+
scrollTo(x, y);
|
|
262
|
+
}
|
|
263
|
+
setScrollState(SCROLL_STATE_IDLE);
|
|
264
|
+
}
|
|
265
|
+
setCurrentItem(item, animated);
|
|
266
|
+
} else if (!isFirstLayout()) {
|
|
267
|
+
mPageListener.onPageSelected(item);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
@Override
|
|
274
|
+
public NativeGestureDispatcher getGestureDispatcher()
|
|
275
|
+
{
|
|
276
|
+
return mGestureDispatcher;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
@Override
|
|
280
|
+
public void setGestureDispatcher(NativeGestureDispatcher nativeGestureDispatcher)
|
|
281
|
+
{
|
|
282
|
+
mGestureDispatcher = nativeGestureDispatcher;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
public void triggerRequestLayout()
|
|
286
|
+
{
|
|
287
|
+
mHandler.post(mMeasureAndLayout);
|
|
288
|
+
}
|
|
289
|
+
public void setOverflow(String overflow)
|
|
290
|
+
{
|
|
291
|
+
//robinsli Android 支持 overflow: visible,超出容器之外的属性节点也可以正常显示
|
|
292
|
+
if(!TextUtils.isEmpty(overflow))
|
|
293
|
+
{
|
|
294
|
+
switch (overflow)
|
|
295
|
+
{
|
|
296
|
+
case "visible":
|
|
297
|
+
setClipChildren(false); //可以超出父亲区域
|
|
298
|
+
break;
|
|
299
|
+
case "hidden":
|
|
300
|
+
{
|
|
301
|
+
setClipChildren(true); //默认值是false
|
|
302
|
+
break;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
invalidate();
|
|
307
|
+
}
|
|
308
|
+
}
|
|
@@ -0,0 +1,148 @@
|
|
|
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.viewpager;
|
|
17
|
+
|
|
18
|
+
import android.view.View;
|
|
19
|
+
import android.view.ViewGroup;
|
|
20
|
+
import com.tencent.mtt.hippy.HippyInstanceContext;
|
|
21
|
+
import com.tencent.mtt.supportui.views.viewpager.ViewPager;
|
|
22
|
+
import com.tencent.mtt.supportui.views.viewpager.ViewPagerAdapter;
|
|
23
|
+
|
|
24
|
+
import java.util.ArrayList;
|
|
25
|
+
import java.util.List;
|
|
26
|
+
|
|
27
|
+
@SuppressWarnings({"unused"})
|
|
28
|
+
public class HippyViewPagerAdapter extends ViewPagerAdapter {
|
|
29
|
+
|
|
30
|
+
private static final String TAG = "HippyViewPagerAdapter";
|
|
31
|
+
|
|
32
|
+
protected final List<View> mViews = new ArrayList<>();
|
|
33
|
+
|
|
34
|
+
private int mChildSize = 0;
|
|
35
|
+
|
|
36
|
+
private int mInitPageIndex = 0;
|
|
37
|
+
|
|
38
|
+
protected final HippyViewPager mViewPager;
|
|
39
|
+
|
|
40
|
+
public HippyViewPagerAdapter(HippyInstanceContext context, HippyViewPager viewPager) {
|
|
41
|
+
mViewPager = viewPager;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
public void setChildSize(int size) {
|
|
45
|
+
mChildSize = size;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
public void setInitPageIndex(int index) {
|
|
49
|
+
mInitPageIndex = index;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
protected void addView(HippyViewPagerItem view, int position) {
|
|
53
|
+
if (view != null && position >= 0) {
|
|
54
|
+
if (position >= mViews.size()) {
|
|
55
|
+
mViews.add(view);
|
|
56
|
+
} else {
|
|
57
|
+
mViews.add(position, view);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
protected void removeViewAtIndex(int postion) {
|
|
63
|
+
if (postion >= 0 && postion < mViews.size()) {
|
|
64
|
+
mViews.remove(postion);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
protected void removeView(View view) {
|
|
69
|
+
int size = mViews.size();
|
|
70
|
+
int index = -1;
|
|
71
|
+
for (int i = 0; i < size; i++) {
|
|
72
|
+
View curr = getViewAt(i);
|
|
73
|
+
if (curr == view) {
|
|
74
|
+
index = i;
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
if (index >= 0) {
|
|
80
|
+
mViews.remove(index);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
protected View getViewAt(int index) {
|
|
85
|
+
if (index < 0 || index >= mViews.size()) {
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
return mViews.get(index);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
protected int getItemViewSize() {
|
|
92
|
+
return mViews.size();
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
@Override
|
|
96
|
+
public int getCount() {
|
|
97
|
+
return mChildSize;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
@Override
|
|
101
|
+
public int getItemPosition(Object object) {
|
|
102
|
+
if (mViews.isEmpty()) {
|
|
103
|
+
return POSITION_NONE;
|
|
104
|
+
}
|
|
105
|
+
@SuppressWarnings("SuspiciousMethodCalls") int index = mViews.indexOf(object);
|
|
106
|
+
if (index < 0) {
|
|
107
|
+
return POSITION_NONE;
|
|
108
|
+
}
|
|
109
|
+
return index;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
@Override
|
|
113
|
+
public Object instantiateItem(ViewGroup container, int position) {
|
|
114
|
+
View viewWrapper = null;
|
|
115
|
+
if (position < mViews.size()) {
|
|
116
|
+
viewWrapper = mViews.get(position);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
if (viewWrapper != null && viewWrapper.getParent() == null) {
|
|
120
|
+
container.addView(viewWrapper, new ViewPager.LayoutParams());
|
|
121
|
+
mViewPager.triggerRequestLayout();
|
|
122
|
+
} else {
|
|
123
|
+
viewWrapper = null;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
return viewWrapper;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
@Override
|
|
130
|
+
public int getInitialItemIndex() {
|
|
131
|
+
return mInitPageIndex;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
@Override
|
|
135
|
+
public void destroyItem(ViewGroup container, int position, Object object) {
|
|
136
|
+
if (object instanceof View) {
|
|
137
|
+
View view = (View) object;
|
|
138
|
+
view.layout(0, 0, 0, 0);
|
|
139
|
+
container.removeView(view);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
@Override
|
|
145
|
+
public boolean isViewFromObject(View view, Object object) {
|
|
146
|
+
return view == object;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
@@ -0,0 +1,246 @@
|
|
|
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.viewpager;
|
|
17
|
+
|
|
18
|
+
import com.tencent.mtt.hippy.annotation.HippyController;
|
|
19
|
+
import com.tencent.mtt.hippy.annotation.HippyControllerProps;
|
|
20
|
+
import com.tencent.mtt.hippy.common.HippyArray;
|
|
21
|
+
import com.tencent.mtt.hippy.common.HippyMap;
|
|
22
|
+
import com.tencent.mtt.hippy.dom.node.NodeProps;
|
|
23
|
+
import com.tencent.mtt.hippy.modules.Promise;
|
|
24
|
+
import com.tencent.mtt.hippy.uimanager.HippyViewController;
|
|
25
|
+
import com.tencent.mtt.hippy.utils.LogUtils;
|
|
26
|
+
import com.tencent.mtt.hippy.utils.PixelUtil;
|
|
27
|
+
|
|
28
|
+
import android.content.Context;
|
|
29
|
+
import android.util.Log;
|
|
30
|
+
import android.view.View;
|
|
31
|
+
import android.view.ViewGroup;
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
@SuppressWarnings({"deprecation", "unused"})
|
|
35
|
+
@HippyController(name = HippyViewPagerController.CLASS_NAME)
|
|
36
|
+
public class HippyViewPagerController extends HippyViewController<HippyViewPager> {
|
|
37
|
+
|
|
38
|
+
public static final String CLASS_NAME = "ViewPager";
|
|
39
|
+
|
|
40
|
+
private static final String TAG = "HippyViewPagerController";
|
|
41
|
+
|
|
42
|
+
private static final String FUNC_SET_PAGE = "setPage";
|
|
43
|
+
private static final String FUNC_SET_PAGE_WITHOUT_ANIM = "setPageWithoutAnimation";
|
|
44
|
+
|
|
45
|
+
private static final String FUNC_SET_INDEX = "setIndex";
|
|
46
|
+
private static final String FUNC_NEXT_PAGE = "next";
|
|
47
|
+
private static final String FUNC_PREV_PAGE = "prev";
|
|
48
|
+
|
|
49
|
+
@Override
|
|
50
|
+
protected View createViewImpl(Context context) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
@Override
|
|
55
|
+
protected View createViewImpl(Context context, HippyMap iniProps)
|
|
56
|
+
{
|
|
57
|
+
boolean isVertical = false;
|
|
58
|
+
boolean enableTransform = true;
|
|
59
|
+
if (iniProps != null) {
|
|
60
|
+
if ((iniProps.containsKey("direction") && iniProps.getString("direction").equals("vertical"))
|
|
61
|
+
|| iniProps.containsKey("vertical")) {
|
|
62
|
+
isVertical = true;
|
|
63
|
+
}
|
|
64
|
+
if(iniProps.containsKey("disableTransform")){
|
|
65
|
+
enableTransform = false;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return new HippyViewPager(context, isVertical,enableTransform);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
@Override
|
|
73
|
+
protected void onCreateViewByCache(View view, String type, HippyMap iniProps) {
|
|
74
|
+
super.onCreateViewByCache(view, type, iniProps);
|
|
75
|
+
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
@Override
|
|
79
|
+
public View getChildAt(HippyViewPager hippyViewPager, int i) {
|
|
80
|
+
return hippyViewPager.getViewFromAdapter(i);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
@Override
|
|
84
|
+
public int getChildCount(HippyViewPager hippyViewPager) {
|
|
85
|
+
return hippyViewPager.getAdapter().getCount();
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
@Override
|
|
89
|
+
protected void addView(ViewGroup parentView, View view, int index) {
|
|
90
|
+
LogUtils.d(TAG, "addView: " + parentView.hashCode() + ", index=" + index);
|
|
91
|
+
if (parentView instanceof HippyViewPager && view instanceof HippyViewPagerItem) {
|
|
92
|
+
HippyViewPager hippyViewPager = (HippyViewPager) parentView;
|
|
93
|
+
hippyViewPager.addViewToAdapter((HippyViewPagerItem) view, index);
|
|
94
|
+
} else {
|
|
95
|
+
LogUtils.e(TAG, "add view got invalid params");
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
@Override
|
|
100
|
+
protected void deleteChild(ViewGroup parentView, View childView) {
|
|
101
|
+
LogUtils.d(TAG, "deleteChild: " + parentView.hashCode());
|
|
102
|
+
if (parentView instanceof HippyViewPager && childView instanceof HippyViewPagerItem) {
|
|
103
|
+
((HippyViewPager) parentView).removeViewFromAdapter((HippyViewPagerItem) childView);
|
|
104
|
+
} else {
|
|
105
|
+
LogUtils.e(TAG, "delete view got invalid params");
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
@Override
|
|
110
|
+
protected void onManageChildComplete(HippyViewPager viewPager) {
|
|
111
|
+
viewPager.setChildCountAndUpdate(viewPager.getAdapter().getItemViewSize());
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
@HippyControllerProps(name = "initialPage", defaultNumber = 0, defaultType = HippyControllerProps.NUMBER)
|
|
115
|
+
public void setInitialPage(HippyViewPager parent, int initialPage) {
|
|
116
|
+
parent.setInitialPageIndex(initialPage);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
@HippyControllerProps(name = "scrollEnabled", defaultBoolean = true, defaultType = HippyControllerProps.BOOLEAN)
|
|
120
|
+
public void setScrollEnabled(HippyViewPager viewPager, boolean value) {
|
|
121
|
+
viewPager.setScrollEnabled(value);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
@HippyControllerProps(name = "pageMargin", defaultNumber = 0, defaultType = HippyControllerProps.NUMBER)
|
|
125
|
+
public void setPageMargin(HippyViewPager pager, float margin) {
|
|
126
|
+
pager.setPageMargin((int) PixelUtil.dp2px(margin));
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
@HippyControllerProps(name = NodeProps.OVERFLOW, defaultType = HippyControllerProps.STRING, defaultString = "visible")
|
|
130
|
+
public void setOverflow(HippyViewPager pager, String overflow) {
|
|
131
|
+
pager.setOverflow(overflow);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
//zhaopeng add
|
|
135
|
+
@HippyControllerProps(name = "focusSearchEnabled", defaultBoolean = false, defaultType = HippyControllerProps.BOOLEAN )
|
|
136
|
+
public void setFocusSearchEnabled(HippyViewPager viewPager, boolean value)
|
|
137
|
+
{
|
|
138
|
+
viewPager.setFocusSearchEnabled(value);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
//zhaopeng add
|
|
142
|
+
@HippyControllerProps(name = "listenFocusSearchOnFail", defaultType = HippyControllerProps.BOOLEAN ,defaultBoolean = false)
|
|
143
|
+
public void setListenFocusSearchOnFail(HippyViewPager view, boolean listen){
|
|
144
|
+
view.setListenFocusSearchOnFail(listen);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
//zhaopeng add
|
|
148
|
+
@HippyControllerProps(name = "scrollDuration", defaultNumber = 300, defaultType = HippyControllerProps.NUMBER)
|
|
149
|
+
public void setAutoScrollCustomDuration(HippyViewPager pager, int duration)
|
|
150
|
+
{
|
|
151
|
+
Log.d("swiper","swiper set scrollDuration "+duration);
|
|
152
|
+
pager.setAutoScrollCustomDuration(duration);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
@Override
|
|
156
|
+
public void dispatchFunction(HippyViewPager view, String functionName, HippyArray var) {
|
|
157
|
+
if (view == null) {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
if(LogUtils.isDebug() ){
|
|
161
|
+
Log.i("ViewPagerLog","dispatchFunction functionName "+functionName+",var:"+var);
|
|
162
|
+
}
|
|
163
|
+
int curr = view.getCurrentItem();
|
|
164
|
+
|
|
165
|
+
switch (functionName) {
|
|
166
|
+
case FUNC_SET_PAGE:
|
|
167
|
+
if (var != null) {
|
|
168
|
+
Object selected = var.get(0);
|
|
169
|
+
if (selected instanceof Integer) {
|
|
170
|
+
view.switchToPage((int) selected, true);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
break;
|
|
174
|
+
case FUNC_SET_PAGE_WITHOUT_ANIM:
|
|
175
|
+
if (var != null) {
|
|
176
|
+
Object selected = var.get(0);
|
|
177
|
+
if (selected instanceof Integer) {
|
|
178
|
+
view.switchToPage((int) selected, false);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
break;
|
|
182
|
+
case FUNC_SET_INDEX:
|
|
183
|
+
if (var != null && var.size() > 0) {
|
|
184
|
+
HippyMap paramsMap = var.getMap(0);
|
|
185
|
+
if (paramsMap != null && paramsMap.size() > 0 && paramsMap
|
|
186
|
+
.containsKey("index")) {
|
|
187
|
+
int index = paramsMap.getInt("index");
|
|
188
|
+
boolean animated = !paramsMap.containsKey("animated") || paramsMap
|
|
189
|
+
.getBoolean("animated");
|
|
190
|
+
view.switchToPage(index, animated);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
break;
|
|
194
|
+
case FUNC_NEXT_PAGE:
|
|
195
|
+
int total = view.getAdapter().getCount();
|
|
196
|
+
if (curr < total - 1) {
|
|
197
|
+
view.switchToPage(curr + 1, true);
|
|
198
|
+
}
|
|
199
|
+
break;
|
|
200
|
+
case FUNC_PREV_PAGE:
|
|
201
|
+
if (curr > 0) {
|
|
202
|
+
view.switchToPage(curr - 1, true);
|
|
203
|
+
}
|
|
204
|
+
break;
|
|
205
|
+
default:
|
|
206
|
+
break;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
@SuppressWarnings("SwitchStatementWithTooFewBranches")
|
|
211
|
+
@Override
|
|
212
|
+
public void dispatchFunction(HippyViewPager view, String functionName, HippyArray params,
|
|
213
|
+
Promise promise) {
|
|
214
|
+
if (view == null) {
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
if(LogUtils.isDebug() ){
|
|
218
|
+
Log.i("ViewPagerLog","dispatchFunction functionName "+functionName+",var:"+params);
|
|
219
|
+
}
|
|
220
|
+
switch (functionName) {
|
|
221
|
+
case FUNC_SET_INDEX:
|
|
222
|
+
if (params != null && params.size() > 0) {
|
|
223
|
+
HippyMap paramsMap = params.getMap(0);
|
|
224
|
+
if (paramsMap != null && paramsMap.size() > 0 && paramsMap
|
|
225
|
+
.containsKey("index")) {
|
|
226
|
+
int index = paramsMap.getInt("index");
|
|
227
|
+
boolean animated = !paramsMap.containsKey("animated") || paramsMap
|
|
228
|
+
.getBoolean("animated");
|
|
229
|
+
view.setCallBackPromise(promise);
|
|
230
|
+
view.switchToPage(index, animated);
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
if (promise != null) {
|
|
236
|
+
String msg = "invalid parameter!";
|
|
237
|
+
HippyMap resultMap = new HippyMap();
|
|
238
|
+
resultMap.pushString("msg", msg);
|
|
239
|
+
promise.resolve(resultMap);
|
|
240
|
+
}
|
|
241
|
+
break;
|
|
242
|
+
default:
|
|
243
|
+
break;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|