You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by ha...@apache.org on 2017/10/10 13:58:09 UTC
[03/15] incubator-weex git commit: fix scroll to bug and add md5 for
template
fix scroll to bug and add md5 for template
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/948aa127
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/948aa127
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/948aa127
Branch: refs/heads/website
Commit: 948aa127dd24b2570d40d1de875b1b38228af33b
Parents: e904b62
Author: jianbai.gbj <ji...@alibaba-inc.com>
Authored: Mon Oct 9 19:19:33 2017 +0800
Committer: gurisxie <27...@qq.com>
Committed: Tue Oct 10 12:11:25 2017 +0800
----------------------------------------------------------------------
.../weex/ui/component/binding/Layouts.java | 69 ++++++++++++++------
.../list/template/TemplateViewHolder.java | 3 +
.../list/template/WXRecyclerTemplateList.java | 3 +-
3 files changed, 53 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/948aa127/android/sdk/src/main/java/com/taobao/weex/ui/component/binding/Layouts.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/binding/Layouts.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/binding/Layouts.java
index bf0abfc..f80bc1e 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/binding/Layouts.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/binding/Layouts.java
@@ -20,11 +20,15 @@ package com.taobao.weex.ui.component.binding;
+import android.os.AsyncTask;
+import android.speech.tts.Voice;
+
import com.taobao.weex.WXSDKInstance;
import com.taobao.weex.dom.WXDomObject;
import com.taobao.weex.dom.flex.CSSLayoutContext;
import com.taobao.weex.ui.component.WXComponent;
import com.taobao.weex.ui.component.WXVContainer;
+import com.taobao.weex.ui.component.list.template.TemplateViewHolder;
/**
* Created by furture on 2017/8/21.
@@ -33,34 +37,57 @@ public class Layouts {
/**
* do dom layout, and set layout to component
* */
- public static void doLayout(WXComponent component, CSSLayoutContext layoutContext){
+ public static void doLayout(final TemplateViewHolder templateViewHolder){
+ final CSSLayoutContext layoutContext = templateViewHolder.getLayoutContext();
+ final WXComponent component = templateViewHolder.getComponent();
final WXSDKInstance instance = component.getInstance();
- WXDomObject domObject = (WXDomObject) component.getDomObject();
- domObject.traverseTree(new WXDomObject.Consumer() {
+ final int position = templateViewHolder.getHolderPosition();
+ if(templateViewHolder.asyncTask != null){
+ templateViewHolder.asyncTask.cancel(true);
+ }
+ AsyncTask<Void, Void, Void> asyncTask = new AsyncTask<Void, Void, Void>() {
@Override
- public void accept(WXDomObject dom) {
- if(instance == null || instance.isDestroy()){
- return;
- }
- if(!dom.hasUpdate()){
- return;
+ protected Void doInBackground(Void... params) {
+ if(templateViewHolder.getHolderPosition() == position){
+
+ WXDomObject domObject = (WXDomObject) component.getDomObject();
+ domObject.traverseTree(new WXDomObject.Consumer() {
+ @Override
+ public void accept(WXDomObject dom) {
+ if(instance == null || instance.isDestroy()){
+ return;
+ }
+ if(!dom.hasUpdate()){
+ return;
+ }
+ dom.layoutBefore();
+ }
+ });
+ domObject.calculateLayout(layoutContext);
+ domObject.traverseTree( new WXDomObject.Consumer() {
+ @Override
+ public void accept(WXDomObject dom) {
+ if(instance == null || instance.isDestroy()){
+ return;
+ }
+ if (dom.hasUpdate()) {
+ dom.layoutAfter();
+ }
+ }
+ });
}
- dom.layoutBefore();
+ return null;
}
- });
- domObject.calculateLayout(layoutContext);
- domObject.traverseTree( new WXDomObject.Consumer() {
+
@Override
- public void accept(WXDomObject dom) {
- if(instance == null || instance.isDestroy()){
- return;
- }
- if (dom.hasUpdate()) {
- dom.layoutAfter();
+ protected void onPostExecute(Void aVoid) {
+ if(position == templateViewHolder.getHolderPosition()) {
+ setLayout(component, false);
}
}
- });
- setLayout(component, false);
+ };
+ templateViewHolder.asyncTask = asyncTask;
+ asyncTask.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR);
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/948aa127/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/TemplateViewHolder.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/TemplateViewHolder.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/TemplateViewHolder.java
index 6a6c2b9..21930eb 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/TemplateViewHolder.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/TemplateViewHolder.java
@@ -17,6 +17,7 @@
* under the License.
*/
package com.taobao.weex.ui.component.list.template;
+import android.os.AsyncTask;
import android.view.View;
import com.taobao.weex.annotation.Component;
@@ -44,6 +45,8 @@ public class TemplateViewHolder extends ListBaseViewHolder {
private int holderPosition = -1;
+ public AsyncTask<Void, Void, Void> asyncTask;
+
/**
* header position
* */
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/948aa127/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java
index 1ca589b..0454aba 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java
@@ -1017,7 +1017,8 @@ public class WXRecyclerTemplateList extends WXVContainer<BounceRecyclerView> imp
if(WXEnvironment.isApkDebugable()){
WXLogUtils.d(TAG, position + getTemplateKey(position) + " onBindViewHolder render used " + (System.currentTimeMillis() - start));
}
- Layouts.doLayout(component, templateViewHolder.getLayoutContext());
+
+ Layouts.doLayout(templateViewHolder);
cellLifecycleManager.onAttach(position, component);
if(WXEnvironment.isApkDebugable()){
WXLogUtils.d(TAG, position + getTemplateKey(position) + " onBindViewHolder layout used " + (System.currentTimeMillis() - start));