@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,377 @@
|
|
|
1
|
+
package com.tencent.extend.views;
|
|
2
|
+
|
|
3
|
+
import android.content.Context;
|
|
4
|
+
import android.content.res.ColorStateList;
|
|
5
|
+
import android.graphics.Color;
|
|
6
|
+
import android.os.Build;
|
|
7
|
+
import android.text.Html;
|
|
8
|
+
import android.text.Spanned;
|
|
9
|
+
import android.text.TextUtils;
|
|
10
|
+
import android.util.Log;
|
|
11
|
+
import android.util.TypedValue;
|
|
12
|
+
import android.view.Gravity;
|
|
13
|
+
import android.view.View;
|
|
14
|
+
|
|
15
|
+
import com.tencent.extend.views.tag.FontTag;
|
|
16
|
+
import com.tencent.extend.views.tag.HtmlTagHandler;
|
|
17
|
+
import com.tencent.extend.views.tag.SpanTag;
|
|
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
|
+
import com.tencent.extend.views.fastlist.Utils;
|
|
28
|
+
|
|
29
|
+
@HippyController(name = TextViewController.CLASS_NAME)
|
|
30
|
+
public class TextViewController extends HippyViewController<TVTextView> {
|
|
31
|
+
public static final String CLASS_NAME = "TextView";
|
|
32
|
+
@Override
|
|
33
|
+
protected View createViewImpl(Context context) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
@Override
|
|
38
|
+
protected View createViewImpl(Context context, HippyMap iniProps) {
|
|
39
|
+
return createViewImpl(context,iniProps,false);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
public View createViewImpl(Context context, HippyMap iniProps,boolean createFromNative) {
|
|
43
|
+
TVTextView text = null;
|
|
44
|
+
if(iniProps.containsKey("marqueeRelay")){
|
|
45
|
+
text = new MarqueeRelayTextView(context,iniProps,createFromNative);
|
|
46
|
+
}else{
|
|
47
|
+
text = new TVTextView(context,iniProps,createFromNative);
|
|
48
|
+
}
|
|
49
|
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
|
50
|
+
if(text.getContext().getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.P) {
|
|
51
|
+
if(iniProps.getInt(NodeProps.TEXT_LINES) > 1) {
|
|
52
|
+
text.setIncludeFontPadding(false);
|
|
53
|
+
//在targetSDK 28以上会带FallbackLineSpacing,从而导致不台平台文本展示不一致,这里去掉
|
|
54
|
+
text.setFallbackLineSpacing(false);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
boolean compat4k = iniProps.getBoolean("compat4k");
|
|
59
|
+
//fixme 2025.07.21 将天猫4k的兼容性代码去掉,保留compat4k参数,天猫需要上层自行兼容
|
|
60
|
+
//Fixme 这里为了天猫4k机器bug,临时写死 (已去除)
|
|
61
|
+
if (compat4k && Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
|
62
|
+
if (PixelUtil.getScreenWidth() > 3000) {
|
|
63
|
+
text.setFallbackLineSpacing(true);
|
|
64
|
+
text.setLineHeight(4);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if(iniProps.containsKey("enablePostTask")){
|
|
68
|
+
text.setEnablePostTask(true);
|
|
69
|
+
}
|
|
70
|
+
if(!createFromNative && iniProps.containsKey("text")){//从FastList中创建时,负责过滤掉${}类型的文本
|
|
71
|
+
setText(text,iniProps.getString("text"));
|
|
72
|
+
}
|
|
73
|
+
return text;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
@HippyControllerProps(name = "lineSpacing", defaultType = HippyControllerProps.NUMBER)
|
|
77
|
+
public void setLineSpacing(TVTextView tvTextView,int space){
|
|
78
|
+
tvTextView.setLineSpacing(space,1);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
@Override
|
|
82
|
+
protected void onCreateViewByCache(View view, String type, HippyMap iniProps) {
|
|
83
|
+
super.onCreateViewByCache(view, type, iniProps);
|
|
84
|
+
if(view instanceof TVTextView && !((TVTextView) view).createFromNative){
|
|
85
|
+
if(iniProps.containsKey("text")){
|
|
86
|
+
setText((TVTextView) view,iniProps.getString("text"));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
@Override
|
|
92
|
+
public void dispatchFunction(TVTextView view, String functionName, HippyArray var) {
|
|
93
|
+
super.dispatchFunction(view, functionName, var);
|
|
94
|
+
switch (functionName){
|
|
95
|
+
case "setText":
|
|
96
|
+
this.setText(view,var.getString(0));
|
|
97
|
+
break;
|
|
98
|
+
case "setTextSize":
|
|
99
|
+
this.setTextSize(view, var.getInt(0));
|
|
100
|
+
break;
|
|
101
|
+
case "setTextColor":
|
|
102
|
+
this.setTextColor(view, var.getString(0));
|
|
103
|
+
break;
|
|
104
|
+
case "textSpan":
|
|
105
|
+
this.setItemJson(view, var.getMap(0));
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
@Override
|
|
111
|
+
protected void updateExtra(View view, Object object) {
|
|
112
|
+
super.updateExtra(view, object);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
@HippyControllerProps(name = NodeProps.TEXT, defaultType = HippyControllerProps.STRING, defaultString = "")
|
|
116
|
+
public void setText(TVTextView tvTextView,String text){
|
|
117
|
+
|
|
118
|
+
// tvTextView.setText(Html.fromHtml(text));
|
|
119
|
+
if(!tvTextView.useTextSpan()){
|
|
120
|
+
if(text != null && text.startsWith("<")){//兼容html样式的文本
|
|
121
|
+
setTextHtml(tvTextView,text);
|
|
122
|
+
}else{
|
|
123
|
+
tvTextView.setText(text);
|
|
124
|
+
}
|
|
125
|
+
}else{
|
|
126
|
+
if(LogUtils.isDebug()){
|
|
127
|
+
Log.w("TextViewController","setText return on use TextSpan");
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
@HippyControllerProps(name = "textHtml", defaultType = HippyControllerProps.STRING, defaultString = "")
|
|
133
|
+
public void setTextHtml(TVTextView tvTextView,String text){
|
|
134
|
+
// tvTextView.setText(Html.fromHtml(text));
|
|
135
|
+
HtmlTagHandler htmlTagHandler = new HtmlTagHandler();
|
|
136
|
+
htmlTagHandler.registerTag("span",new SpanTag(tvTextView.getContext()));
|
|
137
|
+
htmlTagHandler.registerTag("font",new FontTag(tvTextView.getContext()));
|
|
138
|
+
try {
|
|
139
|
+
Spanned spanned = Html.fromHtml(text, htmlTagHandler, htmlTagHandler);
|
|
140
|
+
tvTextView.setText(spanned);
|
|
141
|
+
} catch (Throwable ignored) {
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
@HippyControllerProps(name = "textSpan", defaultType = HippyControllerProps.MAP)
|
|
146
|
+
public void setItemJson(TVTextView view, HippyMap json) {
|
|
147
|
+
if (view != null) {
|
|
148
|
+
view.setTextSpan(json);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
@HippyControllerProps(name = "typeface", defaultType = HippyControllerProps.STRING)
|
|
153
|
+
public void setTypeface(TVTextView view, String typeFace) {
|
|
154
|
+
if (view != null) {
|
|
155
|
+
view.setTypeStyle(typeFace);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
@HippyControllerProps(name = NodeProps.FONT_FAMILY, defaultType = HippyControllerProps.STRING)
|
|
161
|
+
public void setFontFamily(TVTextView view, String family){
|
|
162
|
+
if (view != null)
|
|
163
|
+
view.setFamily(family);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
@HippyControllerProps(name = NodeProps.TEXT_GRAVITY_NUMBER, defaultType = HippyControllerProps.NUMBER, defaultNumber = Gravity.START)
|
|
167
|
+
public void setGravity(TVTextView tvTextView,int gravity){
|
|
168
|
+
tvTextView.setGravity(gravity);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
@HippyControllerProps(name = NodeProps.TEXT_GRAVITY, defaultType = HippyControllerProps.STRING)
|
|
172
|
+
public void setGravityByString(TVTextView tvTextView,String gravity){
|
|
173
|
+
if(gravity.contains("|")){
|
|
174
|
+
final String[] gs = gravity.split("\\|");
|
|
175
|
+
final int gravity1 = getGravity(gs[0]);
|
|
176
|
+
final int gravity2 = getGravity(gs[1]);
|
|
177
|
+
tvTextView.setGravity(gravity1 | gravity2);
|
|
178
|
+
}else {
|
|
179
|
+
tvTextView.setGravity(getGravity(gravity));
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
@HippyControllerProps(name = NodeProps.FONT_SIZE, defaultType = HippyControllerProps.NUMBER)
|
|
185
|
+
public void setFontSize(TVTextView tvTextView,int size){
|
|
186
|
+
setTextSize(tvTextView,size);
|
|
187
|
+
// Log.i("ZHAOPENG","createTextViewImpl size:"+size);
|
|
188
|
+
|
|
189
|
+
// setLineHeight(tvTextView,size + 2);
|
|
190
|
+
// RenderUtil.reLayoutView(tvTextView);
|
|
191
|
+
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
@HippyControllerProps(name = "paddingRect", defaultType = HippyControllerProps.ARRAY)
|
|
195
|
+
public void setPadding(TVTextView view, HippyArray array){
|
|
196
|
+
if(LogUtils.isDebug()){
|
|
197
|
+
Log.d("TV_TEXT_VIEW","setPaddingRect array : "+array+",View id:"+view.getId()+",text:"+view.getText());
|
|
198
|
+
}
|
|
199
|
+
if(array == null){
|
|
200
|
+
view.setPadding(0,0,0,0);
|
|
201
|
+
}else {
|
|
202
|
+
view.setPadding(
|
|
203
|
+
Utils.toPX(array.getInt(0)),
|
|
204
|
+
Utils.toPX(array.getInt(1)),
|
|
205
|
+
Utils.toPX(array.getInt(2)),
|
|
206
|
+
Utils.toPX(array.getInt(3))
|
|
207
|
+
);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
private int getGravity(String gravity){
|
|
212
|
+
switch (gravity) {
|
|
213
|
+
case "center":
|
|
214
|
+
return Gravity.CENTER;
|
|
215
|
+
case "top":
|
|
216
|
+
return Gravity.TOP;
|
|
217
|
+
case "bottom":
|
|
218
|
+
return Gravity.BOTTOM;
|
|
219
|
+
case "end":
|
|
220
|
+
return Gravity.END;
|
|
221
|
+
case "centerHorizontal":
|
|
222
|
+
return Gravity.CENTER_HORIZONTAL;
|
|
223
|
+
case "centerVertical":
|
|
224
|
+
return Gravity.CENTER_VERTICAL;
|
|
225
|
+
case "start":
|
|
226
|
+
default:
|
|
227
|
+
return Gravity.START;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
@HippyControllerProps(name = NodeProps.TEXT_ALIGNMENT, defaultType = HippyControllerProps.NUMBER)
|
|
232
|
+
public void setTextAlignment(TVTextView tvTextView,int align){
|
|
233
|
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
|
234
|
+
tvTextView.setTextAlignment(align);
|
|
235
|
+
}else{
|
|
236
|
+
Log.e("hippy","setTextAlignment error , need JELLY_BEAN_MR1");
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
@HippyControllerProps(name = NodeProps.ELLIPSIZE_MODE, defaultType = HippyControllerProps.NUMBER, defaultNumber = 2)
|
|
241
|
+
public void setEllipsize(TVTextView tvTextView,int where){
|
|
242
|
+
switch (where){
|
|
243
|
+
case 0 :
|
|
244
|
+
tvTextView.setSetAutoMarqueOnFocus(false);
|
|
245
|
+
tvTextView.setEllipsize(TextUtils.TruncateAt.START);
|
|
246
|
+
break;
|
|
247
|
+
case 1 :
|
|
248
|
+
tvTextView.setSetAutoMarqueOnFocus(false);
|
|
249
|
+
tvTextView.setEllipsize(TextUtils.TruncateAt.MIDDLE);
|
|
250
|
+
break;
|
|
251
|
+
case 2 : {
|
|
252
|
+
tvTextView.setSetAutoMarqueOnFocus(false);
|
|
253
|
+
tvTextView.setEllipsize(TextUtils.TruncateAt.END);
|
|
254
|
+
break;
|
|
255
|
+
}
|
|
256
|
+
case 3 :{
|
|
257
|
+
tvTextView.setSetAutoMarqueOnFocus(false);
|
|
258
|
+
tvTextView.setEllipsize(TextUtils.TruncateAt.MARQUEE);
|
|
259
|
+
tvTextView.setSingleLine();
|
|
260
|
+
tvTextView.setMarqueeRepeatLimit(-1);
|
|
261
|
+
break;
|
|
262
|
+
}
|
|
263
|
+
case 4:{
|
|
264
|
+
// Log.i("TVTextViewLog","setEllipsize 4");
|
|
265
|
+
tvTextView.setSetAutoMarqueOnFocus(true);
|
|
266
|
+
tvTextView.setEllipsize(TextUtils.TruncateAt.END);
|
|
267
|
+
break;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
@HippyControllerProps(name = NodeProps.TEXT_LINES, defaultType = HippyControllerProps.NUMBER)
|
|
275
|
+
public void setLines(TVTextView tvTextView,int lines){
|
|
276
|
+
tvTextView.setLines(lines);
|
|
277
|
+
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
@HippyControllerProps(name = NodeProps.TEXT_MAX_LINES, defaultType = HippyControllerProps.NUMBER)
|
|
281
|
+
public void setMaxLines(TVTextView tvTextView,int lines){
|
|
282
|
+
tvTextView.setMaxLines(lines);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
@HippyControllerProps(name = NodeProps.TEXT_COLOR, defaultType = HippyControllerProps.STRING)
|
|
286
|
+
public void setTextColor(TVTextView tvTextView,String color){
|
|
287
|
+
final int colorInt = Color.parseColor(color);
|
|
288
|
+
tvTextView.setTextColor(ColorStateList.valueOf(colorInt));
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
@HippyControllerProps(name = "maxWidth", defaultType = HippyControllerProps.NUMBER)
|
|
292
|
+
public void setMaxWidth(TVTextView tvTextView,int maxWidth) {
|
|
293
|
+
tvTextView.setMaxWidth((int) PixelUtil.dp2px(maxWidth));
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
@HippyControllerProps(name = NodeProps.TEXT_SIZE, defaultType = HippyControllerProps.NUMBER)
|
|
298
|
+
public void setTextSize(TVTextView tvTextView,int size){
|
|
299
|
+
// tvTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);
|
|
300
|
+
tvTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX, (int) Math.ceil(PixelUtil.dp2px(size)));
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
@HippyControllerProps(name = NodeProps.LINE_HEIGHT, defaultType = HippyControllerProps.NUMBER)
|
|
304
|
+
public void setLineHeight(TVTextView tvTextView,int height){
|
|
305
|
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
|
306
|
+
tvTextView.setLineHeight(PixelUtil.dp2pxInt(height));
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
@HippyControllerProps(name = NodeProps.TEXT_SELECT, defaultType = HippyControllerProps.BOOLEAN)
|
|
311
|
+
public void setSelect(TVTextView tvTextView,boolean enable){
|
|
312
|
+
tvTextView.setSelected(enable);
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
@HippyControllerProps(name = "fallbackLineSpacing", defaultType = HippyControllerProps.BOOLEAN)
|
|
316
|
+
public void setFallbackLineSpacing(TVTextView tvTextView,boolean enable){
|
|
317
|
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
|
318
|
+
tvTextView.setFallbackLineSpacing(enable);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
@HippyControllerProps(name = "includeFontPadding", defaultType = HippyControllerProps.BOOLEAN)
|
|
323
|
+
public void setIncludeFontPadding(TVTextView tvTextView,boolean enable){
|
|
324
|
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
|
325
|
+
tvTextView.setIncludeFontPadding(enable);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
@HippyControllerProps(name = NodeProps.TEXT_SELECT)
|
|
330
|
+
public void setSelect(TVTextView tvTextView){
|
|
331
|
+
tvTextView.setSelected(true);
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
@HippyControllerProps(name = "boldOnFocus")
|
|
335
|
+
public void setBoldOnFocus(TVTextView tvTextView,boolean enable){
|
|
336
|
+
tvTextView.setBoldOnFocus(enable);
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
//此处vue是怎么传值的
|
|
340
|
+
@HippyControllerProps(name = "gradientBackground", defaultType = HippyControllerProps.MAP)
|
|
341
|
+
public void setGradientBG(TVTextView view, HippyMap hippyMap){
|
|
342
|
+
if(LogUtils.isDebug()) {
|
|
343
|
+
Log.d("hippy", "ViewGroupController setGradientDrawableBackground view:" + view + ",map:" + hippyMap);
|
|
344
|
+
}
|
|
345
|
+
view.setGradientDrawable(hippyMap);
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
|
|
349
|
+
@HippyControllerProps(name = "marqueeRelay", defaultType = HippyControllerProps.MAP)
|
|
350
|
+
public void setMarqueeRelay(TVTextView view, HippyMap map) {
|
|
351
|
+
if (view instanceof MarqueeRelayTextView && map != null) {
|
|
352
|
+
String key = map.getString("key");
|
|
353
|
+
int index = map.getInt("index");
|
|
354
|
+
((MarqueeRelayTextView) view).joinRelayGroup(key, index);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
@Override
|
|
359
|
+
public void onFocusChange(View v, boolean hasFocus) {
|
|
360
|
+
super.onFocusChange(v, hasFocus);
|
|
361
|
+
if(v instanceof TVTextView ){
|
|
362
|
+
v.setSelected(hasFocus);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
@Override
|
|
367
|
+
public void dispatchFunction(TVTextView view, String functionName, HippyArray params, Promise promise) {
|
|
368
|
+
super.dispatchFunction(view, functionName, params, promise);
|
|
369
|
+
switch (functionName){
|
|
370
|
+
case "getText":
|
|
371
|
+
if(promise != null){
|
|
372
|
+
promise.resolve(view.getText().toString());
|
|
373
|
+
}
|
|
374
|
+
break;
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
package com.tencent.extend.views.fastlist;
|
|
2
|
+
|
|
3
|
+
import android.animation.Animator;
|
|
4
|
+
import android.animation.AnimatorListenerAdapter;
|
|
5
|
+
import android.support.annotation.NonNull;
|
|
6
|
+
import android.support.annotation.Nullable;
|
|
7
|
+
import android.support.v7.widget.DefaultItemAnimator;
|
|
8
|
+
import android.support.v7.widget.RecyclerView;
|
|
9
|
+
import android.view.animation.Interpolator;
|
|
10
|
+
|
|
11
|
+
public class CenterFlyInAnimator extends DefaultItemAnimator {
|
|
12
|
+
final RecyclerView mRecyclerView;
|
|
13
|
+
private static final long DURATION = 600L;
|
|
14
|
+
|
|
15
|
+
public CenterFlyInAnimator(RecyclerView mRecyclerView) {
|
|
16
|
+
this.mRecyclerView = mRecyclerView;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
@Override
|
|
20
|
+
public boolean animateAppearance(@NonNull RecyclerView.ViewHolder holder, @Nullable ItemHolderInfo preLayoutInfo, @NonNull ItemHolderInfo postLayoutInfo) {
|
|
21
|
+
return super.animateAppearance(holder, preLayoutInfo, postLayoutInfo);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
public static void animFlyIn(RecyclerView parent, RecyclerView.ViewHolder holder, int duration, Interpolator interpolator,int delay){
|
|
26
|
+
if (parent == null) return;
|
|
27
|
+
|
|
28
|
+
int centerX = parent.getWidth() / 2;
|
|
29
|
+
int centerY = parent.getHeight() / 2;
|
|
30
|
+
holder.itemView.animate().cancel();
|
|
31
|
+
// 计算项目中心坐标
|
|
32
|
+
int[] itemLocation = new int[2];
|
|
33
|
+
//holder.itemView.getLocationOnScreen(itemLocation);
|
|
34
|
+
itemLocation[0] = holder.itemView.getLeft();
|
|
35
|
+
itemLocation[1] = holder.itemView.getTop();
|
|
36
|
+
int itemCenterX = itemLocation[0] + holder.itemView.getWidth() / 2;
|
|
37
|
+
int itemCenterY = itemLocation[1] + holder.itemView.getHeight() / 2;
|
|
38
|
+
|
|
39
|
+
// 计算从哪个方向飞入
|
|
40
|
+
float startX = itemCenterX < centerX ? -holder.itemView.getWidth() : parent.getWidth();
|
|
41
|
+
// float startY = itemCenterY < centerY ? -holder.itemView.getHeight() : parent.getHeight();
|
|
42
|
+
float startY = itemCenterY < centerY ? -holder.itemView.getHeight() : parent.getHeight();
|
|
43
|
+
|
|
44
|
+
// 设置初始状态
|
|
45
|
+
holder.itemView.setTranslationX(startX);
|
|
46
|
+
holder.itemView.setTranslationY(startY);
|
|
47
|
+
holder.itemView.setAlpha(0f);
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
// 执行飞向中心动画
|
|
51
|
+
holder.itemView.animate()
|
|
52
|
+
.translationX(0)
|
|
53
|
+
.translationY(0)
|
|
54
|
+
.setStartDelay(delay)
|
|
55
|
+
.alpha(1f)
|
|
56
|
+
.setDuration(duration)
|
|
57
|
+
.setInterpolator(interpolator)
|
|
58
|
+
.setListener(new AnimatorListenerAdapter() {
|
|
59
|
+
@Override
|
|
60
|
+
public void onAnimationStart(Animator animation) {
|
|
61
|
+
// dispatchAddStarting(holder);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
@Override
|
|
65
|
+
public void onAnimationEnd(Animator animation) {
|
|
66
|
+
// dispatchAddFinished(holder);
|
|
67
|
+
holder.itemView.setAlpha(1f);
|
|
68
|
+
holder.itemView.setTranslationX(0);
|
|
69
|
+
holder.itemView.setTranslationY(0);
|
|
70
|
+
// 取消动画监听
|
|
71
|
+
holder.itemView.animate().setListener(null);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
@Override
|
|
75
|
+
public void onAnimationCancel(Animator animation) {
|
|
76
|
+
holder.itemView.setAlpha(1f);
|
|
77
|
+
holder.itemView.setTranslationX(0);
|
|
78
|
+
holder.itemView.setTranslationY(0);
|
|
79
|
+
}
|
|
80
|
+
})
|
|
81
|
+
.start();
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
@Override
|
|
85
|
+
public boolean animateAdd(RecyclerView.ViewHolder holder) {
|
|
86
|
+
// 获取RecyclerView的中心坐标
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
@Override
|
|
93
|
+
public long getAddDuration() {
|
|
94
|
+
return DURATION;
|
|
95
|
+
}
|
|
96
|
+
}
|