From 32bbb4f56ef9e6eb8eb8b43a97f736ae27d4a200 Mon Sep 17 00:00:00 2001 From: liufsd Date: Sun, 17 Dec 2017 11:07:27 +0800 Subject: [PATCH 1/2] fix: reset timer when banner reuse --- .../main/java/com/tmall/wireless/tangram/view/BannerView.java | 1 + 1 file changed, 1 insertion(+) diff --git a/tangram/src/main/java/com/tmall/wireless/tangram/view/BannerView.java b/tangram/src/main/java/com/tmall/wireless/tangram/view/BannerView.java index 8c354b9..626f904 100644 --- a/tangram/src/main/java/com/tmall/wireless/tangram/view/BannerView.java +++ b/tangram/src/main/java/com/tmall/wireless/tangram/view/BannerView.java @@ -124,6 +124,7 @@ public class BannerView extends RelativeLayout implements ViewPager.OnPageChange public void setAdapter(PagerAdapter adapter) { mUltraViewPager.setAdapter(adapter); + mUltraViewPager.disableAutoScroll();//reset timer when reuse mUltraViewPager.setOnPageChangeListener(this); } From d63ce1e115e475cd62469514a1e807903885f2da Mon Sep 17 00:00:00 2001 From: longerian Date: Mon, 25 Dec 2017 19:22:39 +0800 Subject: [PATCH 2/2] update UltraViewPager, add tag API to BaseCell, add api to BaseTangramEngine --- tangram/build.gradle | 2 +- .../wireless/tangram/BaseTangramEngine.java | 34 +++++++++++++++++++ .../wireless/tangram/structure/BaseCell.java | 27 +++++++++++++++ 3 files changed, 62 insertions(+), 1 deletion(-) diff --git a/tangram/build.gradle b/tangram/build.gradle index b6947ab..f76817a 100644 --- a/tangram/build.gradle +++ b/tangram/build.gradle @@ -90,7 +90,7 @@ dependencies { compile 'com.android.support:recyclerview-v7:23.1.1@aar' compile 'com.android.support:support-v4:23.1.1@aar' compile 'com.android.support:support-annotations:23.1.1' - compile 'com.alibaba.android:ultraviewpager:1.0.6.3@aar' + compile 'com.alibaba.android:ultraviewpager:1.0.6.5@aar' compile('me.everything:overscroll-decor-android:1.0.1@aar') { transitive true exclude group: 'com.android.support', module: 'recyclerview-v7' diff --git a/tangram/src/main/java/com/tmall/wireless/tangram/BaseTangramEngine.java b/tangram/src/main/java/com/tmall/wireless/tangram/BaseTangramEngine.java index 9f75ee2..276f450 100644 --- a/tangram/src/main/java/com/tmall/wireless/tangram/BaseTangramEngine.java +++ b/tangram/src/main/java/com/tmall/wireless/tangram/BaseTangramEngine.java @@ -43,9 +43,11 @@ import com.tmall.wireless.tangram.core.service.ServiceManager; import com.tmall.wireless.tangram.dataparser.DataParser; import com.tmall.wireless.tangram.dataparser.IAdapterBuilder; import com.tmall.wireless.tangram.dataparser.concrete.BaseCardBinderResolver; +import com.tmall.wireless.tangram.dataparser.concrete.BaseCellBinder; import com.tmall.wireless.tangram.dataparser.concrete.BaseCellBinderResolver; import com.tmall.wireless.tangram.dataparser.concrete.CardResolver; import com.tmall.wireless.tangram.eventbus.BusSupport; +import com.tmall.wireless.tangram.structure.BaseCell; import com.tmall.wireless.tangram.structure.card.VVCard; import com.tmall.wireless.tangram.support.TimerSupport; import com.tmall.wireless.tangram.util.ImageUtils; @@ -209,6 +211,38 @@ public class BaseTangramEngine implements ServiceManager { } } + /** + * register cell after engine has been created + * @param type + * @param cellClz + * @param viewClz + * @param + */ + public void registerCell(String type, + @NonNull Class cellClz, @NonNull Class viewClz) { + registerCell(type, viewClz); + MVHelper mMVHelper = getService(MVHelper.class); + if (mMVHelper != null && mMVHelper.resolver() != null) { + mMVHelper.resolver().registerCompatible(type, cellClz); + } + } + + /** + * register cell after engine has been created + * @param type + * @param viewClz + * @param + */ + public void registerCell(String type, @NonNull Class viewClz) { + BaseCellBinderResolver baseCellBinderResolver = getService(BaseCellBinderResolver.class); + MVHelper mMVHelper = getService(MVHelper.class); + if (baseCellBinderResolver != null && mMVHelper != null && mMVHelper.resolver() != null) { + baseCellBinderResolver.register(type, new BaseCellBinder<>(viewClz, mMVHelper)); + mMVHelper.resolver().register(type, viewClz); + } + + } + /** * Call this when your activity is ready to destory to clear inner resource. */ diff --git a/tangram/src/main/java/com/tmall/wireless/tangram/structure/BaseCell.java b/tangram/src/main/java/com/tmall/wireless/tangram/structure/BaseCell.java index aeb5e28..7c88d91 100644 --- a/tangram/src/main/java/com/tmall/wireless/tangram/structure/BaseCell.java +++ b/tangram/src/main/java/com/tmall/wireless/tangram/structure/BaseCell.java @@ -24,6 +24,7 @@ package com.tmall.wireless.tangram.structure; +import android.util.SparseArray; import com.tmall.wireless.tangram.Engine; import com.tmall.wireless.tangram.MVHelper; import com.tmall.wireless.tangram.core.service.ServiceManager; @@ -138,6 +139,8 @@ public class BaseCell extends ComponentLifecycle implements View public boolean mIsExposed = false; + private SparseArray mTag; + public BaseCell() { objectId = sIsGenIds ? sIdGen.getAndIncrement() : 0; } @@ -332,4 +335,28 @@ public class BaseCell extends ComponentLifecycle implements View return extras; } } + + /** + * bind a tag to baseCell + * @param key + * @param value + */ + public void setTag(int key, Object value) { + if (mTag == null) { + mTag = new SparseArray<>(); + } + mTag.put(key, value); + } + + /** + * get a tag from baseCell + * @param key + * @return + */ + public Object getTag(int key) { + if (mTag != null) { + return mTag.get(key); + } + return null; + } }