You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by ky...@apache.org on 2018/11/29 03:27:55 UTC
[incubator-weex] branch master updated: * [Android] interaction
position for fixed element (#1839)
This is an automated email from the ASF dual-hosted git repository.
kyork pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-weex.git
The following commit(s) were added to refs/heads/master by this push:
new 8780ecd * [Android] interaction position for fixed element (#1839)
8780ecd is described below
commit 8780ecd8b16c4697e6ae4cc0109d387236df682d
Author: chen <lu...@users.noreply.github.com>
AuthorDate: Thu Nov 29 11:27:50 2018 +0800
* [Android] interaction position for fixed element (#1839)
---
.../com/taobao/weex/ui/component/WXComponent.java | 46 +++++++++++++++-------
1 file changed, 31 insertions(+), 15 deletions(-)
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
index 1255579..1e1353e 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
@@ -173,6 +173,8 @@ public abstract class WXComponent<T extends View> extends WXBasicComponent imple
private String mLastBoxShadowId;
public int mDeepInComponentTree = 0;
public boolean mIsAddElementToTree = false;
+ //for fix element case
+ public int interactionAbsoluteX=0,interactionAbsoluteY=0;
public WXTracing.TraceInfo mTraceInfo = new WXTracing.TraceInfo();
@@ -988,21 +990,6 @@ public abstract class WXComponent<T extends View> extends WXBasicComponent imple
mAbsoluteY = (int) (nullParent ? 0 : mParent.getAbsoluteY() + getCSSLayoutTop());
mAbsoluteX = (int) (nullParent ? 0 : mParent.getAbsoluteX() + getCSSLayoutLeft());
- if (mIsAddElementToTree){
- if (null == getInstance().getApmForInstance().instanceRect){
- getInstance().getApmForInstance().instanceRect = new Rect();
- }
- Rect instanceRect = getInstance().getApmForInstance().instanceRect;
- instanceRect.set(0,0,mInstance.getWeexWidth(),mInstance.getWeexHeight());
- boolean inScreen =
- instanceRect.contains(mAbsoluteX,mAbsoluteY) //leftTop
- || instanceRect.contains(mAbsoluteX+realWidth,mAbsoluteY)//rightTop
- || instanceRect.contains(mAbsoluteX,mAbsoluteY+realHeight)//leftBottom
- || instanceRect.contains(mAbsoluteX+realWidth,mAbsoluteY+realHeight);//rightBottom
- mInstance.onChangeElement(this,!inScreen);
- }
-
-
if (mHost == null) {
return;
}
@@ -1051,6 +1038,7 @@ public abstract class WXComponent<T extends View> extends WXBasicComponent imple
} else {
setHostLayoutParams(mHost, realWidth, realHeight, realLeft, realRight, realTop, realBottom);
}
+ recordInteraction(realWidth,realHeight);
mPreRealWidth = realWidth;
mPreRealHeight = realHeight;
mPreRealLeft = realLeft;
@@ -1062,6 +1050,34 @@ public abstract class WXComponent<T extends View> extends WXBasicComponent imple
}
}
+ private void recordInteraction(int realWidth,int realHeight){
+ if (!mIsAddElementToTree){
+ return;
+ }
+ mIsAddElementToTree = false;
+ if (null == mParent){
+ interactionAbsoluteX = 0;
+ interactionAbsoluteY = 0;
+ }else {
+ float cssTop = getCSSLayoutTop();
+ float cssLeft = getCSSLayoutLeft();
+ interactionAbsoluteX = (int)(this.isFixed() ? cssLeft : mParent.interactionAbsoluteX + cssLeft);
+ interactionAbsoluteY = (int)(this.isFixed() ? cssTop : mParent.interactionAbsoluteY + cssTop);
+ }
+
+ if (null == getInstance().getApmForInstance().instanceRect){
+ getInstance().getApmForInstance().instanceRect = new Rect();
+ }
+ Rect instanceRect = getInstance().getApmForInstance().instanceRect;
+ instanceRect.set(0,0,mInstance.getWeexWidth(),mInstance.getWeexHeight());
+ boolean inScreen =
+ instanceRect.contains(interactionAbsoluteX,interactionAbsoluteY) //leftTop
+ || instanceRect.contains(interactionAbsoluteX+realWidth,interactionAbsoluteY)//rightTop
+ || instanceRect.contains(interactionAbsoluteX,interactionAbsoluteY+realHeight)//leftBottom
+ || instanceRect.contains(interactionAbsoluteX+realWidth,interactionAbsoluteY+realHeight);//rightBottom
+ mInstance.onChangeElement(this,!inScreen);
+ }
+
private void setWidgetParams(Widget widget, FlatGUIContext UIImp, Point rawoffset,
int width, int height, int left, int right, int top, int bottom) {
Point childOffset = new Point();