yuzhilin

稿件详情视频播放

@@ -21,6 +21,12 @@ interface dataObject { @@ -21,6 +21,12 @@ interface dataObject {
21 method?: string 21 method?: string
22 url?: string 22 url?: string
23 parameters?: object 23 parameters?: object
  24 + videoUrl?: string
  25 + positionWidth?: string
  26 + positionHeight?: string
  27 + positionLeft?: string
  28 + positionTop?: string
  29 + videoLandscape?: string
24 } 30 }
25 31
26 /** 32 /**
1 import router from '@ohos.router'; 1 import router from '@ohos.router';
2 -import { BridgeHandler, BridgeUtil, BridgeWebViewControl, Callback } from 'wdJsBridge'; 2 +import { BridgeUtil, BridgeWebViewControl, Callback } from 'wdJsBridge';
3 import { Logger } from 'wdKit/Index'; 3 import { Logger } from 'wdKit/Index';
4 -import { setDefaultNativeWebSettings } from './WebComponentUtil';  
5 -import { Action } from 'wdBean';  
6 import { performJSCallNative } from './JsBridgeBiz'; 4 import { performJSCallNative } from './JsBridgeBiz';
7 import { H5CallNativeType } from './H5CallNativeType'; 5 import { H5CallNativeType } from './H5CallNativeType';
8 import { Message } from 'wdJsBridge/src/main/ets/bean/Message'; 6 import { Message } from 'wdJsBridge/src/main/ets/bean/Message';
@@ -12,11 +10,18 @@ const TAG = 'WdWebLocalComponent'; @@ -12,11 +10,18 @@ const TAG = 'WdWebLocalComponent';
12 @Component 10 @Component
13 export struct WdWebLocalComponent { 11 export struct WdWebLocalComponent {
14 webviewControl: BridgeWebViewControl = new BridgeWebViewControl() 12 webviewControl: BridgeWebViewControl = new BridgeWebViewControl()
15 - onWebPrepared: () => void = () => {} 13 + onWebPrepared: () => void = () => {
  14 + }
16 @Prop backVisibility: boolean = false 15 @Prop backVisibility: boolean = false
17 @Prop webResource: Resource = {} as Resource 16 @Prop webResource: Resource = {} as Resource
18 @State webHeight: string | number = '100%' 17 @State webHeight: string | number = '100%'
19 @Link isPageEnd: boolean 18 @Link isPageEnd: boolean
  19 + @State videoUrl: string = ''
  20 + @State positionWidth: number = 0
  21 + @State positionHeight: number = 0
  22 + @State positionLeft: number = 0
  23 + @State positionTop: number = 0
  24 + @State videoLandscape: string = '1'
20 25
21 build() { 26 build() {
22 Column() { 27 Column() {
@@ -33,6 +38,8 @@ export struct WdWebLocalComponent { @@ -33,6 +38,8 @@ export struct WdWebLocalComponent {
33 .height(44) 38 .height(44)
34 .visibility(this.backVisibility ? Visibility.Visible : Visibility.None) 39 .visibility(this.backVisibility ? Visibility.Visible : Visibility.None)
35 40
  41 + Row() {
  42 + RelativeContainer() {
36 Web({ src: this.webResource, controller: this.webviewControl }) 43 Web({ src: this.webResource, controller: this.webviewControl })
37 .domStorageAccess(true) 44 .domStorageAccess(true)
38 .databaseAccess(true) 45 .databaseAccess(true)
@@ -64,6 +71,30 @@ export struct WdWebLocalComponent { @@ -64,6 +71,30 @@ export struct WdWebLocalComponent {
64 } 71 }
65 return this.onLoadIntercept(event.data.getRequestUrl().toString()); 72 return this.onLoadIntercept(event.data.getRequestUrl().toString());
66 }) 73 })
  74 + .id('web')
  75 + .alignRules({
  76 + top: { anchor: "__container__", align: VerticalAlign.Top },
  77 + })
  78 +
  79 + if (this.videoUrl) {
  80 + Video({ src: this.videoUrl })
  81 + .autoPlay(true)
  82 + .width(this.positionWidth)
  83 + .height(this.positionHeight)
  84 + .borderRadius(5)
  85 + .alignRules({
  86 + top: { anchor: "__container__", align: VerticalAlign.Top },
  87 + })
  88 + .offset({
  89 + x: this.positionLeft,
  90 + y: this.positionTop
  91 + })
  92 + .id("video")
  93 + }
  94 +
  95 + }
  96 + }.width('100%')
  97 + .height(this.webHeight)
67 } 98 }
68 } 99 }
69 100
@@ -73,7 +104,8 @@ export struct WdWebLocalComponent { @@ -73,7 +104,8 @@ export struct WdWebLocalComponent {
73 let handleName = H5CallNativeType.JsCallTypeList[i]; 104 let handleName = H5CallNativeType.JsCallTypeList[i];
74 let handle = (data: Message, f: Callback) => { 105 let handle = (data: Message, f: Callback) => {
75 Logger.debug('registerHandlers handlerName: ' + JSON.stringify(data.data)) 106 Logger.debug('registerHandlers handlerName: ' + JSON.stringify(data.data))
76 - this.setCurrentPageOperate(data) 107 + this.setCurrentPageOperate8(data)
  108 + this.setCurrentPageOperate9(data)
77 this.defaultPerformJSCallNative(data, f) 109 this.defaultPerformJSCallNative(data, f)
78 }; 110 };
79 this.webviewControl.registerHandler(handleName, { handle: handle }); 111 this.webviewControl.registerHandler(handleName, { handle: handle });
@@ -81,7 +113,7 @@ export struct WdWebLocalComponent { @@ -81,7 +113,7 @@ export struct WdWebLocalComponent {
81 } 113 }
82 114
83 //webview 高度设置 115 //webview 高度设置
84 - private setCurrentPageOperate: (data: Message) => void = (data) => { 116 + private setCurrentPageOperate8: (data: Message) => void = (data) => {
85 if (data.handlerName === H5CallNativeType.jsCall_currentPageOperate && data?.data?.operateType === '8') { 117 if (data.handlerName === H5CallNativeType.jsCall_currentPageOperate && data?.data?.operateType === '8') {
86 if (typeof this.webHeight === 'number') { 118 if (typeof this.webHeight === 'number') {
87 if (Number(data?.data?.webViewHeight) > this.webHeight) { 119 if (Number(data?.data?.webViewHeight) > this.webHeight) {
@@ -93,6 +125,17 @@ export struct WdWebLocalComponent { @@ -93,6 +125,17 @@ export struct WdWebLocalComponent {
93 } 125 }
94 } 126 }
95 } 127 }
  128 + //播放视频
  129 + private setCurrentPageOperate9: (data: Message) => void = (data) => {
  130 + if (data.handlerName === H5CallNativeType.jsCall_currentPageOperate && data?.data?.operateType === '9') {
  131 + this.videoUrl = data?.data?.videoUrl || ''
  132 + this.positionWidth = Number(data?.data?.positionWidth) || 0
  133 + this.positionHeight = Number(data?.data?.positionHeight) || 0
  134 + this.positionLeft = Number(data?.data?.positionLeft) || 0
  135 + this.positionTop = Number(data?.data?.positionTop) || 0
  136 + this.videoLandscape = data?.data?.videoLandscape || '1'
  137 + }
  138 + }
96 /** 139 /**
97 * 默认【CallNative】逻辑处理 140 * 默认【CallNative】逻辑处理
98 */ 141 */
@@ -20,6 +20,7 @@ import { WDRouterPage, WDRouterRule } from 'wdRouter/Index'; @@ -20,6 +20,7 @@ import { WDRouterPage, WDRouterRule } from 'wdRouter/Index';
20 import { MultiPictureDetailViewModel } from '../viewmodel/MultiPictureDetailViewModel'; 20 import { MultiPictureDetailViewModel } from '../viewmodel/MultiPictureDetailViewModel';
21 import { PageRepository } from '../repository/PageRepository'; 21 import { PageRepository } from '../repository/PageRepository';
22 import { detailedSkeleton } from './skeleton/detailSkeleton'; 22 import { detailedSkeleton } from './skeleton/detailSkeleton';
  23 +import { CommentComponent } from '../components/comment/view/CommentComponent'
23 24
24 const PATTERN_DATE_CN_RN: string = 'yyyy年MM月dd日 HH:mm'; 25 const PATTERN_DATE_CN_RN: string = 'yyyy年MM月dd日 HH:mm';
25 26
@@ -76,7 +77,6 @@ export struct ImageAndTextPageComponent { @@ -76,7 +77,6 @@ export struct ImageAndTextPageComponent {
76 Column() { 77 Column() {
77 // 点赞 78 // 点赞
78 if (this.contentDetailData[0]?.openLikes) { 79 if (this.contentDetailData[0]?.openLikes) {
79 - // 点赞  
80 Row() { 80 Row() {
81 Row() { 81 Row() {
82 if (this.newsStatusOfUser?.likeStatus === '1') { 82 if (this.newsStatusOfUser?.likeStatus === '1') {
@@ -116,13 +116,17 @@ export struct ImageAndTextPageComponent { @@ -116,13 +116,17 @@ export struct ImageAndTextPageComponent {
116 if (this.recommendList.length > 0) { 116 if (this.recommendList.length > 0) {
117 RecommendList({ recommendList: this.recommendList }) 117 RecommendList({ recommendList: this.recommendList })
118 } 118 }
  119 + // 评论
  120 + if(this.contentDetailData[0]?.openComment){
  121 +
  122 + }
119 } 123 }
120 } 124 }
121 125
122 } 126 }
123 .width(CommonConstants.FULL_WIDTH) 127 .width(CommonConstants.FULL_WIDTH)
124 .height(CommonConstants.FULL_HEIGHT) 128 .height(CommonConstants.FULL_HEIGHT)
125 - .padding({ bottom: 76 }) 129 + .padding({ bottom: 126 })
126 .scrollBar(BarState.Off) 130 .scrollBar(BarState.Off)
127 131
128 if (!this.isPageEnd) { 132 if (!this.isPageEnd) {
@@ -96,7 +96,6 @@ export struct ImageAndTextWebComponent { @@ -96,7 +96,6 @@ export struct ImageAndTextWebComponent {
96 backVisibility: false, 96 backVisibility: false,
97 onWebPrepared: this.onWebPrepared.bind(this), 97 onWebPrepared: this.onWebPrepared.bind(this),
98 isPageEnd: $isPageEnd 98 isPageEnd: $isPageEnd
99 -  
100 }) 99 })
101 } 100 }
102 } 101 }