* [android] Remove useless method and TODOs, rename class.
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/60b6aad7 Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/60b6aad7 Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/60b6aad7 Branch: refs/heads/0.16-dev Commit: 60b6aad7ddda3d83f37c4d366dea00e6493d75b8 Parents: 58546e6 Author: YorkShen <shenyua...@gmail.com> Authored: Fri Sep 8 12:11:28 2017 +0800 Committer: YorkShen <shenyua...@gmail.com> Committed: Wed Sep 13 16:54:08 2017 +0800 ---------------------------------------------------------------------- .../adapter/PicassoBasedDrawableLoader.java | 112 ---------------- .../java/com/alibaba/weex/WXApplication.java | 2 - .../java/com/taobao/weex/WXSDKInstance.java | 7 +- .../taobao/weex/adapter/DrawableStrategy.java | 5 - .../com/taobao/weex/common/WXImageStrategy.java | 8 +- .../taobao/weex/ui/component/WXComponent.java | 7 +- .../com/taobao/weex/ui/flat/FlatGUIContext.java | 130 ++++++++++++++++++ .../taobao/weex/ui/flat/FlatGUIIContext.java | 132 ------------------- .../taobao/weex/ui/flat/WidgetContainer.java | 2 +- .../weex/ui/flat/widget/AndroidViewWidget.java | 4 +- .../taobao/weex/ui/flat/widget/BaseWidget.java | 45 +------ .../taobao/weex/ui/flat/widget/ImageWidget.java | 102 -------------- .../taobao/weex/ui/flat/widget/TextWidget.java | 4 +- .../com/taobao/weex/ui/flat/widget/Widget.java | 17 --- .../taobao/weex/ui/flat/widget/WidgetGroup.java | 4 +- .../com/taobao/weex/ui/view/WXFrameLayout.java | 2 - .../com/taobao/weex/ui/component/WXDivTest.java | 6 +- .../taobao/weex/ui/component/WXTextTest.java | 4 +- 18 files changed, 155 insertions(+), 438 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/commons/src/main/java/com/alibaba/weex/commons/adapter/PicassoBasedDrawableLoader.java ---------------------------------------------------------------------- diff --git a/android/commons/src/main/java/com/alibaba/weex/commons/adapter/PicassoBasedDrawableLoader.java b/android/commons/src/main/java/com/alibaba/weex/commons/adapter/PicassoBasedDrawableLoader.java deleted file mode 100644 index 0d03934..0000000 --- a/android/commons/src/main/java/com/alibaba/weex/commons/adapter/PicassoBasedDrawableLoader.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.alibaba.weex.commons.adapter; - -import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.ColorFilter; -import android.graphics.PixelFormat; -import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.Drawable; -import android.view.Gravity; - -import com.squareup.picasso.Picasso; -import com.squareup.picasso.Target; -import com.taobao.weex.WXSDKManager; -import com.taobao.weex.adapter.DrawableStrategy; -import com.taobao.weex.adapter.IDrawableLoader; - - -public class PicassoBasedDrawableLoader implements IDrawableLoader { - - private Context mContext; - - public PicassoBasedDrawableLoader(Context context) { - mContext = context; - } - - @Override - public void setDrawable(final String url, - final DrawableTarget drawableTarget, - final DrawableStrategy drawableStrategy) { - WXSDKManager.getInstance().postOnUiThread(new Runnable() { - @Override - public void run() { - String temp = url; - if (url.startsWith("//")) { - temp = "http:" + url; - } - - /** This is a hack for picasso, as Picasso hold weakReference to Target. - * http://stackoverflow.com/questions/24180805/onbitmaploaded-of-target-object-not-called-on-first-load - */ - class PlaceHolderDrawableTarget extends Drawable implements Target { - - @Override - public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { - BitmapDrawable bitmapDrawable = new BitmapDrawable(mContext.getResources(), bitmap); - bitmapDrawable.setGravity(Gravity.FILL); - if(drawableTarget instanceof StaticTarget) { - ((StaticTarget) drawableTarget).setDrawable(bitmapDrawable, true); - } - } - - @Override - public void onBitmapFailed(Drawable errorDrawable) { - - } - - @Override - public void onPrepareLoad(Drawable placeHolderDrawable) { - if(drawableTarget instanceof StaticTarget) { - ((StaticTarget) drawableTarget).setDrawable(this, true); - } - } - - @Override - public void draw(Canvas canvas) { - - } - - @Override - public void setAlpha(int alpha) { - - } - - @Override - public void setColorFilter(ColorFilter colorFilter) { - - } - - @Override - public int getOpacity() { - return PixelFormat.UNKNOWN; - } - } - Picasso. - with(mContext). - load(temp). - into(new PlaceHolderDrawableTarget()); - } - }, 0); - - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/playground/app/src/main/java/com/alibaba/weex/WXApplication.java ---------------------------------------------------------------------- diff --git a/android/playground/app/src/main/java/com/alibaba/weex/WXApplication.java b/android/playground/app/src/main/java/com/alibaba/weex/WXApplication.java index 5844341..561d292 100644 --- a/android/playground/app/src/main/java/com/alibaba/weex/WXApplication.java +++ b/android/playground/app/src/main/java/com/alibaba/weex/WXApplication.java @@ -25,7 +25,6 @@ import android.os.Bundle; import com.alibaba.weex.commons.adapter.DefaultWebSocketAdapterFactory; import com.alibaba.weex.commons.adapter.ImageAdapter; import com.alibaba.weex.commons.adapter.JSExceptionAdapter; -import com.alibaba.weex.commons.adapter.PicassoBasedDrawableLoader; import com.alibaba.weex.extend.PlayDebugAdapter; import com.alibaba.weex.extend.adapter.InterceptWXHttpAdapter; import com.alibaba.weex.extend.component.RichText; @@ -71,7 +70,6 @@ public class WXApplication extends Application { .setWebSocketAdapterFactory(new DefaultWebSocketAdapterFactory()) .setJSExceptionAdapter(new JSExceptionAdapter()) .setHttpAdapter(new InterceptWXHttpAdapter()) - .setDrawableLoader(new PicassoBasedDrawableLoader(this)) .build() ); http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java index a3ae67e..93191a8 100644 --- a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java +++ b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java @@ -70,7 +70,7 @@ import com.taobao.weex.ui.component.NestedContainer; import com.taobao.weex.ui.component.WXBasicComponentType; import com.taobao.weex.ui.component.WXComponent; import com.taobao.weex.ui.component.WXComponentFactory; -import com.taobao.weex.ui.flat.FlatGUIIContext; +import com.taobao.weex.ui.flat.FlatGUIContext; import com.taobao.weex.ui.view.WXScrollView; import com.taobao.weex.ui.view.WXScrollView.WXScrollViewListener; import com.taobao.weex.utils.Trace; @@ -79,7 +79,6 @@ import com.taobao.weex.utils.WXJsonUtils; import com.taobao.weex.utils.WXLogUtils; import com.taobao.weex.utils.WXReflectionUtils; import com.taobao.weex.utils.WXViewUtils; -import com.taobao.weex.WXSDKEngine; import java.io.Serializable; import java.util.ArrayList; @@ -123,7 +122,7 @@ public class WXSDKInstance implements IWXActivityStateListener,DomContext, View. private static volatile int mViewPortWidth = 750; private int mInstanceViewPortWidth = 750; private final @NonNull - FlatGUIIContext mUIImp =new FlatGUIIContext(); + FlatGUIContext mUIImp =new FlatGUIContext(); public long mRenderStartNanos; public int mExecJSTraceId = WXTracing.nextId(); @@ -205,7 +204,7 @@ public class WXSDKInstance implements IWXActivityStateListener,DomContext, View. } public @NonNull - FlatGUIIContext getFlatUIContext(){ + FlatGUIContext getFlatUIContext(){ return mUIImp; } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/main/java/com/taobao/weex/adapter/DrawableStrategy.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/adapter/DrawableStrategy.java b/android/sdk/src/main/java/com/taobao/weex/adapter/DrawableStrategy.java index 6c01aa8..c6daa5a 100644 --- a/android/sdk/src/main/java/com/taobao/weex/adapter/DrawableStrategy.java +++ b/android/sdk/src/main/java/com/taobao/weex/adapter/DrawableStrategy.java @@ -20,13 +20,8 @@ package com.taobao.weex.adapter; -import com.taobao.weex.common.WXImageStrategy; -import com.taobao.weex.dom.WXImageQuality; - public class DrawableStrategy { public int width; public int height; - public WXImageStrategy imageStrategy; - public WXImageQuality imageQuality; } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/main/java/com/taobao/weex/common/WXImageStrategy.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/common/WXImageStrategy.java b/android/sdk/src/main/java/com/taobao/weex/common/WXImageStrategy.java index de2572e..994c99b 100644 --- a/android/sdk/src/main/java/com/taobao/weex/common/WXImageStrategy.java +++ b/android/sdk/src/main/java/com/taobao/weex/common/WXImageStrategy.java @@ -19,7 +19,7 @@ package com.taobao.weex.common; import android.widget.ImageView; -import com.taobao.weex.adapter.IDrawableLoader.DrawableTarget; + import java.util.Map; public class WXImageStrategy { @@ -58,12 +58,6 @@ public class WXImageStrategy { ImageListener imageListener; - WidgetListener widgetListener; - - public interface WidgetListener{ - public void onImageFinish(String url,DrawableTarget drawableTarget,boolean result,Map extra); - } - public interface ImageListener{ public void onImageFinish(String url,ImageView imageView,boolean result,Map extra); } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java ---------------------------------------------------------------------- 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 c2313b2..3d9749d 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 @@ -70,7 +70,7 @@ import com.taobao.weex.ui.component.pesudo.OnActivePseudoListner; import com.taobao.weex.ui.component.pesudo.PesudoStatus; import com.taobao.weex.ui.component.pesudo.TouchActivePseudoListener; import com.taobao.weex.ui.flat.FlatComponent; -import com.taobao.weex.ui.flat.FlatGUIIContext; +import com.taobao.weex.ui.flat.FlatGUIContext; import com.taobao.weex.ui.flat.WidgetContainer; import com.taobao.weex.ui.flat.widget.AndroidViewWidget; import com.taobao.weex.ui.flat.widget.Widget; @@ -473,14 +473,13 @@ public abstract class WXComponent<T extends View> implements IWXObject, IWXActi private void setComponentLayoutParams(int realWidth, int realHeight, int realLeft, int realTop, int realRight, int realBottom, Point rawOffset) { - FlatGUIIContext UIImp = getInstance().getFlatUIContext(); + FlatGUIContext UIImp = getInstance().getFlatUIContext(); WidgetContainer ancestor; Widget widget; if ((ancestor = UIImp.getFlatComponentAncestor(this)) != null) { if (this instanceof FlatComponent && !((FlatComponent) this).promoteToView(true)) { widget = ((FlatComponent) this).getOrCreateFlatWidget(); } else { - //TODO Be careful with nested hierarchy, such as widget, view, widget hierarchy. widget = UIImp.getAndroidViewWidget(this); } setWidgetParams(widget, UIImp, rawOffset, realWidth, realHeight, realLeft, realRight, realTop, @@ -500,7 +499,7 @@ public abstract class WXComponent<T extends View> implements IWXObject, IWXActi } } - private void setWidgetParams(Widget widget, FlatGUIIContext UIImp, Point rawoffset, + 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(); if (mParent != null) { http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/main/java/com/taobao/weex/ui/flat/FlatGUIContext.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/flat/FlatGUIContext.java b/android/sdk/src/main/java/com/taobao/weex/ui/flat/FlatGUIContext.java new file mode 100644 index 0000000..e208f4c --- /dev/null +++ b/android/sdk/src/main/java/com/taobao/weex/ui/flat/FlatGUIContext.java @@ -0,0 +1,130 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package com.taobao.weex.ui.flat; + + +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.annotation.RestrictTo; +import android.support.annotation.RestrictTo.Scope; +import android.support.v4.util.ArrayMap; +import android.text.TextUtils; +import android.view.View; +import com.taobao.weex.common.Constants.Name; +import com.taobao.weex.dom.ImmutableDomObject; +import com.taobao.weex.dom.WXAttr; +import com.taobao.weex.dom.WXDomObject; +import com.taobao.weex.dom.WXStyle; +import com.taobao.weex.ui.component.WXComponent; +import com.taobao.weex.ui.flat.widget.AndroidViewWidget; +import com.taobao.weex.ui.flat.widget.Widget; +import java.util.Map; + +//TODO when Weex instance is destroyed, there is a work of garbage collection. +//TODO The constructor of FlatGUIContext should have a flag decide whether to enable flagGUI. + +@RestrictTo(Scope.LIBRARY) +public class FlatGUIContext { + + private Map<WXComponent, WidgetContainer> mWidgetRegistry = new ArrayMap<>(); + private Map<WXComponent, AndroidViewWidget> mViewWidgetRegistry = new ArrayMap<>(); + private Map<Widget, WXComponent> widgetToComponent = new ArrayMap<>(); + + public boolean isFlatUIEnabled(WXComponent component) { + return component.isFlatUIEnabled(); + } + + public void register(@NonNull WXComponent descendant, @NonNull WidgetContainer ancestor) { + if (!(ancestor instanceof FlatComponent) || + ((FlatComponent) ancestor).promoteToView(true)) { + mWidgetRegistry.put(descendant, ancestor); + } + } + + public void register(@NonNull WXComponent component, @NonNull AndroidViewWidget viewWidget){ + mViewWidgetRegistry.put(component, viewWidget); + } + + public void register(@NonNull Widget widget, @NonNull WXComponent component){ + widgetToComponent.put(widget, component); + } + + public + @Nullable + WidgetContainer getFlatComponentAncestor(@NonNull WXComponent flatWidget) { + return mWidgetRegistry.get(flatWidget); + } + + public + @Nullable + AndroidViewWidget getAndroidViewWidget(@NonNull WXComponent component) { + return mViewWidgetRegistry.get(component); + } + + public boolean promoteToView(@NonNull WXComponent component, boolean checkAncestor, + @NonNull Class<? extends WXComponent<?>> expectedClass) { + return !isFlatUIEnabled(component) || + !expectedClass.equals(component.getClass()) || + TextUtils.equals(component.getRef(), WXDomObject.ROOT) || + (checkAncestor && getFlatComponentAncestor(component) == null) || + checkComponent(component); + } + + public + @Nullable + View getWidgetContainerView(Widget widget) { + WXComponent component, ancestor; + View ret = null; + if ((component = getComponent(widget)) != null) { + if ((ancestor = getFlatComponentAncestor(component)) != null) { + ret = ancestor.getHostView(); + } + } + return ret; + } + + private @Nullable WXComponent getComponent(@NonNull Widget widget){ + return widgetToComponent.get(widget); + } + + private boolean checkComponent(@NonNull WXComponent component) { + boolean ret = false; + ImmutableDomObject domObject = component.getDomObject(); + if (domObject != null) { + WXStyle style = domObject.getStyles(); + WXAttr attr = domObject.getAttrs(); + //TODO disabled && pro_fixed_size, attr or style + if (style.containsKey(Name.OPACITY) || + style.containsKey(Name.TRANSFORM) || + attr.containsKey(Name.ELEVATION) || + attr.containsKey(Name.ARIA_HIDDEN) || + attr.containsKey(Name.ARIA_LABEL) || + attr.containsKey(WXComponent.PROP_FIXED_SIZE) || + style.containsKey(Name.VISIBILITY) || + attr.containsKey(Name.DISABLED) || + style.isFixed() || + style.isSticky() || + !style.getPesudoStyles().isEmpty() || + domObject.getEvents().size() > 0) { + ret = true; + } + } + return ret; + } +} http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/main/java/com/taobao/weex/ui/flat/FlatGUIIContext.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/flat/FlatGUIIContext.java b/android/sdk/src/main/java/com/taobao/weex/ui/flat/FlatGUIIContext.java deleted file mode 100644 index dde4118..0000000 --- a/android/sdk/src/main/java/com/taobao/weex/ui/flat/FlatGUIIContext.java +++ /dev/null @@ -1,132 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.taobao.weex.ui.flat; - - -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.RestrictTo; -import android.support.annotation.RestrictTo.Scope; -import android.support.v4.util.ArrayMap; -import android.text.TextUtils; -import android.view.View; -import com.taobao.weex.common.Constants.Name; -import com.taobao.weex.dom.ImmutableDomObject; -import com.taobao.weex.dom.WXAttr; -import com.taobao.weex.dom.WXDomObject; -import com.taobao.weex.dom.WXStyle; -import com.taobao.weex.ui.component.WXComponent; -import com.taobao.weex.ui.flat.widget.AndroidViewWidget; -import com.taobao.weex.ui.flat.widget.Widget; -import java.util.Map; - -//TODO when Weex instance is destroyed, there is a work of garbage collection. -//TODO !!!!The index of weex playground show empty cell sometimes. -//TODO The constructor of FlatGUIContext should have a flag decide whether to enable flagGUI. - -@RestrictTo(Scope.LIBRARY) -public class FlatGUIIContext { - - private boolean mFlatUIEnabled = true; - private Map<WXComponent, WidgetContainer> mWidgetRegistry = new ArrayMap<>(); - private Map<WXComponent, AndroidViewWidget> mViewWidgetRegistry = new ArrayMap<>(); - private Map<Widget, WXComponent> widgetToComponent = new ArrayMap<>(); - - public boolean isFlatUIEnabled(WXComponent component) { - return mFlatUIEnabled && component.isFlatUIEnabled(); - } - - public void register(@NonNull WXComponent descendant, @NonNull WidgetContainer ancestor) { - if (!(ancestor instanceof FlatComponent) || - ((FlatComponent) ancestor).promoteToView(true)) { - mWidgetRegistry.put(descendant, ancestor); - } - } - - public void register(@NonNull WXComponent component, @NonNull AndroidViewWidget viewWidget){ - mViewWidgetRegistry.put(component, viewWidget); - } - - public void register(@NonNull Widget widget, @NonNull WXComponent component){ - widgetToComponent.put(widget, component); - } - - public - @Nullable - WidgetContainer getFlatComponentAncestor(@NonNull WXComponent flatWidget) { - return mWidgetRegistry.get(flatWidget); - } - - public - @Nullable - AndroidViewWidget getAndroidViewWidget(@NonNull WXComponent component) { - return mViewWidgetRegistry.get(component); - } - - public boolean promoteToView(@NonNull WXComponent component, boolean checkAncestor, - @NonNull Class<? extends WXComponent<?>> expectedClass) { - return !isFlatUIEnabled(component) || - !expectedClass.equals(component.getClass()) || - TextUtils.equals(component.getRef(), WXDomObject.ROOT) || - (checkAncestor && getFlatComponentAncestor(component) == null) || - checkComponent(component); - } - - public - @Nullable - View getWidgetContainerView(Widget widget) { - WXComponent component, ancestor; - View ret = null; - if ((component = getComponent(widget)) != null) { - if ((ancestor = getFlatComponentAncestor(component)) != null) { - ret = ancestor.getHostView(); - } - } - return ret; - } - - private @Nullable WXComponent getComponent(@NonNull Widget widget){ - return widgetToComponent.get(widget); - } - - private boolean checkComponent(@NonNull WXComponent component) { - boolean ret = false; - ImmutableDomObject domObject = component.getDomObject(); - if (domObject != null) { - WXStyle style = domObject.getStyles(); - WXAttr attr = domObject.getAttrs(); - //disabled && pro_fixed_size, attr or style - if (style.containsKey(Name.OPACITY) || - style.containsKey(Name.TRANSFORM) || - attr.containsKey(Name.ELEVATION) || - attr.containsKey(Name.ARIA_HIDDEN) || - attr.containsKey(Name.ARIA_LABEL) || - attr.containsKey(WXComponent.PROP_FIXED_SIZE) || - style.containsKey(Name.VISIBILITY) || - attr.containsKey(Name.DISABLED) || - style.isFixed() || - style.isSticky() || - !style.getPesudoStyles().isEmpty() || - domObject.getEvents().size() > 0) { - ret = true; - } - } - return ret; - } -} http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/main/java/com/taobao/weex/ui/flat/WidgetContainer.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/flat/WidgetContainer.java b/android/sdk/src/main/java/com/taobao/weex/ui/flat/WidgetContainer.java index 68e68a4..f68aaeb 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/flat/WidgetContainer.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/flat/WidgetContainer.java @@ -56,7 +56,7 @@ public abstract class WidgetContainer<T extends ViewGroup> extends WXVContainer< if (ret.first != null) { WXComponent child = ret.first; Widget flatChild; - FlatGUIIContext uiImp = getInstance().getFlatUIContext(); + FlatGUIContext uiImp = getInstance().getFlatUIContext(); WidgetContainer parent = uiImp.getFlatComponentAncestor(this); if (parent == null || uiImp.getAndroidViewWidget(this) != null) { parent = this; http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/AndroidViewWidget.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/AndroidViewWidget.java b/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/AndroidViewWidget.java index 8f1b873..b7968af 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/AndroidViewWidget.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/AndroidViewWidget.java @@ -25,13 +25,13 @@ import android.support.annotation.Nullable; import android.support.annotation.RestrictTo; import android.support.annotation.RestrictTo.Scope; import android.view.View; -import com.taobao.weex.ui.flat.FlatGUIIContext; +import com.taobao.weex.ui.flat.FlatGUIContext; @RestrictTo(Scope.LIBRARY) public class AndroidViewWidget extends BaseWidget { private @Nullable View mView; - public AndroidViewWidget(@NonNull FlatGUIIContext context) { + public AndroidViewWidget(@NonNull FlatGUIContext context) { super(context); } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/BaseWidget.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/BaseWidget.java b/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/BaseWidget.java index aba912f..6e226be 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/BaseWidget.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/BaseWidget.java @@ -24,11 +24,10 @@ import android.graphics.Point; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.support.annotation.NonNull; -import android.support.annotation.Nullable; import android.support.annotation.RestrictTo; import android.support.annotation.RestrictTo.Scope; import android.view.View; -import com.taobao.weex.ui.flat.FlatGUIIContext; +import com.taobao.weex.ui.flat.FlatGUIContext; import com.taobao.weex.ui.view.border.BorderDrawable; @RestrictTo(Scope.LIBRARY) @@ -40,9 +39,10 @@ abstract class BaseWidget implements Widget { private int leftOffset, topOffset, rightOffset, bottomOffset; private Rect borderBox = new Rect(); private Point offsetOfContainer = new Point(); - private final @NonNull FlatGUIIContext context; + private final @NonNull + FlatGUIContext context; - BaseWidget(@NonNull FlatGUIIContext context){ + BaseWidget(@NonNull FlatGUIContext context){ this.context = context; } @@ -77,48 +77,16 @@ abstract class BaseWidget implements Widget { invalidate(); } - @Override - public - @NonNull - Rect getBorderBox() { - return borderBox; - } - @NonNull @Override public Point getLocInFlatContainer() { return offsetOfContainer; } - @Nullable - @Override - public BorderDrawable getBackgroundAndBorder() { - return backgroundBorder; - } - - @Override - public int getLeftOffset() { - return leftOffset; - } - - @Override - public int getTopOffset() { - return topOffset; - } - - @Override - public int getRightOffset() { - return rightOffset; - } - - @Override - public int getBottomOffset() { - return bottomOffset; - } - @Override public final void draw(@NonNull Canvas canvas) { canvas.save(); + //TODO clip according to path, not borderBox canvas.clipRect(borderBox); canvas.translate(borderBox.left, borderBox.top); if (backgroundBorder != null) { @@ -130,8 +98,7 @@ abstract class BaseWidget implements Widget { canvas.restore(); } - @Override - public void invalidate() { + protected void invalidate() { Rect dirtyRegion = new Rect(borderBox); dirtyRegion.offset(offsetOfContainer.x, offsetOfContainer.y); View widgetContainer; http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/ImageWidget.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/ImageWidget.java b/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/ImageWidget.java deleted file mode 100644 index db370db..0000000 --- a/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/ImageWidget.java +++ /dev/null @@ -1,102 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.taobao.weex.ui.flat.widget; - - -import android.graphics.Canvas; -import android.graphics.drawable.Drawable; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.RestrictTo; -import android.support.annotation.RestrictTo.Scope; -import android.widget.ImageView.ScaleType; -import com.taobao.weex.adapter.IDrawableLoader.AnimatedTarget; -import com.taobao.weex.adapter.IDrawableLoader.StaticTarget; -import com.taobao.weex.ui.component.WXImage; -import com.taobao.weex.ui.flat.FlatGUIIContext; -import com.taobao.weex.utils.ImageDrawable; -import java.util.Arrays; - -@RestrictTo(Scope.LIBRARY) -public class ImageWidget extends BaseWidget implements StaticTarget, AnimatedTarget { - - //TODO WXImage.src.readyToRender - //TODO blur - private Drawable mImageDrawable; - private ScaleType mScaleType = WXImage.DEFAULT_SCALE_TYPE; - private float[] borderRadius; - - public ImageWidget(@NonNull FlatGUIIContext context) { - super(context); - } - - @Override - public void onDraw(@NonNull Canvas canvas) { - if (mImageDrawable != null) { - mImageDrawable.draw(canvas); - } - } - - @Override - public void setAnimatedDrawable(@Nullable Drawable drawable) { - mImageDrawable = drawable; - initDrawable(); - } - - @Override - public void setDrawable(@Nullable Drawable drawable, boolean resetBounds) { - setDrawable(drawable); - } - - public void setDrawable(@Nullable Drawable imageDrawable) { - //As there is a translate operation in BaseWidget, - //width and height of the widget instead of borderBox should be passed to ImageDrawable. - mImageDrawable = ImageDrawable - .createImageDrawable(imageDrawable, mScaleType, null, - getBorderBox().width() - getLeftOffset() - getRightOffset(), - getBorderBox().height() - getTopOffset() - getBottomOffset(), false); - if (mImageDrawable instanceof ImageDrawable) { - if (!Arrays.equals(((ImageDrawable) mImageDrawable).getCornerRadii(), borderRadius)) { - ((ImageDrawable) mImageDrawable).setCornerRadii(borderRadius); - } - } - initDrawable(); - } - - public void setScaleType(ScaleType scaleType) { - this.mScaleType = scaleType; - setDrawable(mImageDrawable); - } - - public void setBorderRadius(float[] borderRadius) { - this.borderRadius = borderRadius; - } - - public @Nullable Drawable getDrawable(){ - return mImageDrawable; - } - - private void initDrawable(){ - if(mImageDrawable!=null) { - mImageDrawable.setBounds(0, 0, getBorderBox().width(), getBorderBox().height()); - setCallback(mImageDrawable); - invalidate(); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/TextWidget.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/TextWidget.java b/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/TextWidget.java index afabc7b..2a69b46 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/TextWidget.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/TextWidget.java @@ -24,14 +24,14 @@ import android.support.annotation.NonNull; import android.support.annotation.RestrictTo; import android.support.annotation.RestrictTo.Scope; import android.text.Layout; -import com.taobao.weex.ui.flat.FlatGUIIContext; +import com.taobao.weex.ui.flat.FlatGUIContext; @RestrictTo(Scope.LIBRARY) public class TextWidget extends BaseWidget { private Layout mLayout; - public TextWidget(@NonNull FlatGUIIContext context) { + public TextWidget(@NonNull FlatGUIContext context) { super(context); } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/Widget.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/Widget.java b/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/Widget.java index 0b4e724..7de3990 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/Widget.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/Widget.java @@ -21,9 +21,7 @@ package com.taobao.weex.ui.flat.widget; import android.graphics.Canvas; import android.graphics.Point; -import android.graphics.Rect; import android.support.annotation.NonNull; -import android.support.annotation.Nullable; import android.support.annotation.RestrictTo; import android.support.annotation.RestrictTo.Scope; import com.taobao.weex.ui.view.border.BorderDrawable; @@ -43,21 +41,6 @@ public interface Widget { void setContentBox(int leftOffset, int topOffset, int rightOffset, int bottomOffset); - @NonNull Rect getBorderBox(); - - @Nullable - BorderDrawable getBackgroundAndBorder(); - @NonNull Point getLocInFlatContainer(); - int getLeftOffset(); - - int getTopOffset(); - - int getRightOffset(); - - int getBottomOffset(); - - void invalidate(); - } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/WidgetGroup.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/WidgetGroup.java b/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/WidgetGroup.java index 433e133..de8ed56 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/WidgetGroup.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/flat/widget/WidgetGroup.java @@ -23,7 +23,7 @@ import android.graphics.Canvas; import android.support.annotation.NonNull; import android.support.annotation.RestrictTo; import android.support.annotation.RestrictTo.Scope; -import com.taobao.weex.ui.flat.FlatGUIIContext; +import com.taobao.weex.ui.flat.FlatGUIContext; import java.util.LinkedList; import java.util.List; @@ -32,7 +32,7 @@ public class WidgetGroup extends BaseWidget { private List<Widget> mChildren = new LinkedList<>(); - public WidgetGroup(@NonNull FlatGUIIContext context) { + public WidgetGroup(@NonNull FlatGUIContext context) { super(context); } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/main/java/com/taobao/weex/ui/view/WXFrameLayout.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXFrameLayout.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXFrameLayout.java index db9a8ec..4156de8 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXFrameLayout.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXFrameLayout.java @@ -37,7 +37,6 @@ import java.util.List; * FrameLayout wrapper * */ -//TODO Read the code of View.draw, and override the correct method. public class WXFrameLayout extends FrameLayout implements WXGestureObservable,IRenderStatus<WXDiv>,IRenderResult<WXDiv> { private WXGesture wxGesture; @@ -98,7 +97,6 @@ public class WXFrameLayout extends FrameLayout implements WXGestureObservable,IR protected void dispatchDraw(Canvas canvas) { if (mWidgets != null) { canvas.save(); - //TODO need clip here canvas.translate(getPaddingLeft(), getPaddingTop()); for (Widget widget : mWidgets) { widget.draw(canvas); http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/test/java/com/taobao/weex/ui/component/WXDivTest.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/test/java/com/taobao/weex/ui/component/WXDivTest.java b/android/sdk/src/test/java/com/taobao/weex/ui/component/WXDivTest.java index 3aa9674..480d5a6 100644 --- a/android/sdk/src/test/java/com/taobao/weex/ui/component/WXDivTest.java +++ b/android/sdk/src/test/java/com/taobao/weex/ui/component/WXDivTest.java @@ -27,7 +27,7 @@ import com.taobao.weex.dom.TestDomObject; import com.taobao.weex.dom.WXDomObject; import com.taobao.weex.dom.WXEvent; import com.taobao.weex.dom.flex.Spacing; -import com.taobao.weex.ui.flat.FlatGUIIContext; +import com.taobao.weex.ui.flat.FlatGUIContext; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -61,7 +61,7 @@ public class WXDivTest { public void setUp() throws Exception { WXSDKInstance instance = Mockito.mock(WXSDKInstance.class); Mockito.when(instance.getContext()).thenReturn(RuntimeEnvironment.application); - Mockito.when(instance.getFlatUIContext()).thenReturn(new FlatGUIIContext()); + Mockito.when(instance.getFlatUIContext()).thenReturn(new FlatGUIContext()); WXDomObject divDom = new WXDomObject(); WXDomObject spy = Mockito.spy(divDom); @@ -77,7 +77,7 @@ public class WXDivTest { public void testAddChild(){ WXSDKInstance instance = Mockito.mock(WXSDKInstance.class); Mockito.when(instance.getContext()).thenReturn(RuntimeEnvironment.application); - Mockito.when(instance.getFlatUIContext()).thenReturn(new FlatGUIIContext()); + Mockito.when(instance.getFlatUIContext()).thenReturn(new FlatGUIContext()); WXDomObject testDom = Mockito.mock(WXDomObject.class); Mockito.when(testDom.getPadding()).thenReturn(new Spacing()); http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/60b6aad7/android/sdk/src/test/java/com/taobao/weex/ui/component/WXTextTest.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/test/java/com/taobao/weex/ui/component/WXTextTest.java b/android/sdk/src/test/java/com/taobao/weex/ui/component/WXTextTest.java index a12095e..3b6700f 100644 --- a/android/sdk/src/test/java/com/taobao/weex/ui/component/WXTextTest.java +++ b/android/sdk/src/test/java/com/taobao/weex/ui/component/WXTextTest.java @@ -32,7 +32,7 @@ import com.taobao.weex.dom.WXDomObject; import com.taobao.weex.dom.WXTextDomObject; import com.taobao.weex.dom.flex.Spacing; import com.taobao.weex.ui.SimpleComponentHolder; -import com.taobao.weex.ui.flat.FlatGUIIContext; +import com.taobao.weex.ui.flat.FlatGUIContext; import java.util.HashMap; import java.util.Map; import org.junit.Before; @@ -59,7 +59,7 @@ public class WXTextTest { WXEnvironment.sApplication = RuntimeEnvironment.application; WXSDKInstance instance = Mockito.mock(WXSDKInstance.class); Mockito.when(instance.getContext()).thenReturn(RuntimeEnvironment.application); - Mockito.when(instance.getFlatUIContext()).thenReturn(new FlatGUIIContext()); + Mockito.when(instance.getFlatUIContext()).thenReturn(new FlatGUIContext()); mParentDomObj = Mockito.spy(new WXDomObject()); Mockito.when(mParentDomObj.getPadding()).thenReturn(new Spacing());