- native组件覆盖在webview上,如何实现平滑滚动?
简单实现了下,在webview中添加了定时器监听: setInterval(this.judgeBoundingRect, 1) judgeBoundingRect = () => { if(!this.mapDiv.current)return; const {id} = this.props const newBoundingRect = this.mapDiv.current.getBoundingClientRect() if(this.boundingRect){ const {left, top, width, height} = newBoundingRect const {left: oldLeft, top: oldTop, width: oldWidth, height: oldHeight} = this.boundingRect if(left !== oldLeft || top !== oldTop || width !== oldWidth || height !== oldHeight){//判断位置和大小是否发生了变化 SparkJSBridgeTemp.invoke(ViewEventNames.UPDATE_NATIVE_VIEW_BOUND_RECT, {data: { data: { boundingRect: newBoundingRect, id: id } }}, null) } } this.boundingRect = newBoundingRect } android里直接更新 private void updateNativeViewBoundRectByJsonObj(String id, JSONObject boundingrect){ int width = DensityUtil.dip2px(getContext(), (float) boundingrect.optDouble("width")); int height = DensityUtil.dip2px(getContext(), (float)boundingrect.optDouble("height")); int left = DensityUtil.dip2px(getContext(), (float)boundingrect.optDouble("left")); int top = DensityUtil.dip2px(getContext(), (float)boundingrect.optDouble("top")); View view = mNativeViews.get(id); FrameLayout.LayoutParams lp; if(view.getLayoutParams() != null){ lp = (FrameLayout.LayoutParams) view.getLayoutParams(); }else { lp = new FrameLayout.LayoutParams(width, height); } lp.leftMargin = left; lp.topMargin = top; lp.width = width; lp.height = height; view.setLayoutParams(lp); } 更新效果可以实现,但是会略有延迟。不知道如何解决。。。 大家一起来讨论下吧,谢谢!
2020-05-15 - cover-view的实现原理是native上覆盖webview吗?为啥需要cover-image?
如果cover-view是native上覆盖webview,那么为什么不直接支持image标签呢?还要额外实现一个cover-image? 求解答 欢迎大家讨论。
2020-05-15