simplify clicksupport, exposuresupport

This commit is contained in:
longerian
2018-04-16 19:15:38 +08:00
parent 8a26045ff0
commit 5ef82a032e
6 changed files with 48 additions and 128 deletions
@@ -113,7 +113,7 @@ public class RxClickSupportTest extends AndroidTestCase {
Log.d("RxClickSupportTest", "testOneCellClicks test One cell mEventType " + clickEvent.getArg3());
}
};
mSimpleClickSupport.setConsumer(consumer1);
//mSimpleClickSupport.setConsumer(consumer1);
mBaseCell1.click(mView1);
mView1.performClick();
}
@@ -132,7 +132,7 @@ public class RxClickSupportTest extends AndroidTestCase {
Log.d("RxClickSupportTest", "testTwoCellClicks mEventType " + clickEvent.getArg3());
}
};
mSimpleClickSupport.setConsumer(consumer1);
//mSimpleClickSupport.setConsumer(consumer1);
mBaseCell1.click(mView1);
mView1.performClick();
@@ -147,7 +147,7 @@ public class RxClickSupportTest extends AndroidTestCase {
Log.d("RxClickSupportTest", "testTwoCellClicks mEventType " + clickEvent.getArg3());
}
};
mSimpleClickSupport.setConsumer(consumer2);
//mSimpleClickSupport.setConsumer(consumer2);
mBaseCell2.click(mView2);
mView2.performClick();
@@ -167,7 +167,7 @@ public class RxClickSupportTest extends AndroidTestCase {
Log.d("RxClickSupportTest", "testOneConsumerSubscribeTwoCellClicks mEventType " + clickEvent.getArg3());
}
};
mSimpleClickSupport.setConsumer(consumer);
//mSimpleClickSupport.setConsumer(consumer);
mBaseCell1.click(mView1);
mView1.performClick();
@@ -189,10 +189,10 @@ public class RxClickSupportTest extends AndroidTestCase {
assertTrue(false);
}
};
mSimpleClickSupport.setConsumer(consumer);
//mSimpleClickSupport.setConsumer(consumer);
mBaseCell1.click(mView1);
mSimpleClickSupport.destroy();
//mSimpleClickSupport.destroy();
mView1.performClick();
}
@@ -208,7 +208,7 @@ public class RxClickSupportTest extends AndroidTestCase {
Log.d("RxClickSupportTest", "testCellClickDisposeAndResubscribe mEventType " + clickEvent.getArg3());
}
};
mSimpleClickSupport.setConsumer(consumer);
//mSimpleClickSupport.setConsumer(consumer);
mBaseCell1.click(mView1);
mBaseCell1.click(mView1);
@@ -229,7 +229,7 @@ public class RxClickSupportTest extends AndroidTestCase {
Log.d("RxClickSupportTest", "testOneCellWithMultiViewClick view " + clickEvent.getArg1());
}
};
mSimpleClickSupport.setConsumer(consumer);
//mSimpleClickSupport.setConsumer(consumer);
mBaseCell1.click(mView1);
mBaseCell1.click(mView2);
@@ -254,12 +254,12 @@ public class RxClickSupportTest extends AndroidTestCase {
assertTrue(false);
}
};
mSimpleClickSupport.setConsumer(consumer);
//mSimpleClickSupport.setConsumer(consumer);
mBaseCell1.click(mView1);
mBaseCell1.click(mView2);
mSimpleClickSupport.destroy();
//mSimpleClickSupport.destroy();
mView1.performClick();
mView2.performClick();
@@ -129,7 +129,7 @@ public class RxExposureSupportTest extends AndroidTestCase {
Log.d("RxExposureSupportTest", "testOneCellExposure test One cell mEventType " + clickEvent.getArg3());
}
};
mExposureSupport.setConsumer(consumer1);
//mExposureSupport.setConsumer(consumer1);
mBaseCell1.exposure(mView1);
}
@@ -147,7 +147,7 @@ public class RxExposureSupportTest extends AndroidTestCase {
Log.d("RxExposureSupportTest", "testOneCellWithMultiViewExposure view " + clickEvent.getArg1());
}
};
mExposureSupport.setConsumer(consumer1);
//mExposureSupport.setConsumer(consumer1);
mBaseCell1.exposure(mView1);
mBaseCell1.exposure(mView2);
@@ -166,7 +166,7 @@ public class RxExposureSupportTest extends AndroidTestCase {
Log.d("RxExposureSupportTest", "testOneConsumerSubscribeTwoCellExposure mEventType " + clickEvent.getArg3());
}
};
mExposureSupport.setConsumer(consumer);
//mExposureSupport.setConsumer(consumer);
mBaseCell1.exposure(mView1);
mBaseCell2.exposure(mView2);
}
@@ -203,18 +203,18 @@ public class RxExposureSupportTest extends AndroidTestCase {
}
@Override
public void onRxExposure(Observable<ClickExposureCellOp> exposureCellOpObservable,
ClickExposureCellOp rxEvent) {
mCompositeDisposable.add(
exposureCellOpObservable.delaySubscription(1, TimeUnit.MINUTES).subscribe(consumer));
}
//@Override
//public void onRxExposure(Observable<ClickExposureCellOp> exposureCellOpObservable,
// ClickExposureCellOp rxEvent) {
// mCompositeDisposable.add(
// exposureCellOpObservable.delaySubscription(1, TimeUnit.MINUTES).subscribe(consumer));
//}
@Override
public void destroy() {
super.destroy();
mCompositeDisposable.clear();
}
//@Override
//public void destroy() {
// super.destroy();
// mCompositeDisposable.clear();
//}
};
mServiceManager.register(ExposureSupport.class, exposureSupport);
mBaseCell1.exposure(mView1);
+1 -1
View File
@@ -46,7 +46,7 @@ org.gradle.jvmargs=-Xmx1536M
GROUP=com.alibaba.android
ARTIFACT=tangram
VERSION=1
VERSION_NAME=2.2.3.3
VERSION_NAME=2.2.3.4
PACKAGING_TYPE=aar
systemProp.compileSdkVersion=25
systemProp.targetSdkVersion=25
@@ -43,29 +43,11 @@ import com.tmall.wireless.tangram.op.ClickExposureCellOp;
import com.tmall.wireless.tangram.op.UpdateCellOp;
import com.tmall.wireless.tangram.support.CellClickObservable;
import com.tmall.wireless.tangram.support.CellExposureObservable;
import com.tmall.wireless.tangram.support.ExposureSupport;
import com.tmall.wireless.tangram.support.SimpleClickSupport;
import com.tmall.wireless.tangram.util.BDE;
import com.tmall.wireless.tangram.util.IInnerImageSetter;
import com.tmall.wireless.tangram.util.ImageUtils;
import com.tmall.wireless.tangram.util.LifeCycleHelper;
import com.tmall.wireless.tangram.util.LifeCycleProviderImpl;
import io.reactivex.Completable;
import io.reactivex.CompletableSource;
import io.reactivex.CompletableTransformer;
import io.reactivex.Maybe;
import io.reactivex.MaybeSource;
import io.reactivex.MaybeTransformer;
import io.reactivex.Observable;
import io.reactivex.ObservableSource;
import io.reactivex.ObservableTransformer;
import io.reactivex.Single;
import io.reactivex.SingleSource;
import io.reactivex.SingleTransformer;
import io.reactivex.functions.Consumer;
import io.reactivex.functions.Function;
import io.reactivex.functions.Predicate;
import io.reactivex.subjects.BehaviorSubject;
import io.reactivex.subjects.PublishSubject;
import org.json.JSONArray;
import org.json.JSONObject;
@@ -397,8 +379,7 @@ public class BaseCell<V extends View> extends ComponentLifecycle implements View
* @param rxClickExposureEvent
* @since 3.0.0
*/
public void exposure(View targetView, ClickExposureCellOp rxClickExposureEvent) {
final ExposureSupport exposureSupport = serviceManager.getService(ExposureSupport.class);
public CellExposureObservable exposure(View targetView, ClickExposureCellOp rxClickExposureEvent) {
CellExposureObservable cellExposureObservable = mViewExposureObservables.get(targetView);
if (cellExposureObservable == null) {
cellExposureObservable = new CellExposureObservable(rxClickExposureEvent);
@@ -406,16 +387,14 @@ public class BaseCell<V extends View> extends ComponentLifecycle implements View
} else {
cellExposureObservable.setRxClickExposureEvent(rxClickExposureEvent);
}
if (exposureSupport != null) {
exposureSupport.onRxExposure(cellExposureObservable, rxClickExposureEvent);
}
return cellExposureObservable;
}
/**
* @param targetView
* @since 3.0.0
*/
public void exposure(View targetView) {
public CellExposureObservable exposure(View targetView) {
ClickExposureCellOp rxExposureEvent = mRxExposureEvents.get(targetView);
if (rxExposureEvent == null) {
rxExposureEvent = new ClickExposureCellOp(targetView, this, this.pos);
@@ -425,7 +404,7 @@ public class BaseCell<V extends View> extends ComponentLifecycle implements View
rxExposureEvent.setArg2(this);
rxExposureEvent.setArg3(this.pos);
}
exposure(targetView, rxExposureEvent);
return exposure(targetView, rxExposureEvent);
}
private ArrayMap<View, ClickExposureCellOp> mRxClickEvents = new ArrayMap<>();
@@ -437,7 +416,7 @@ public class BaseCell<V extends View> extends ComponentLifecycle implements View
* @param rxClickExposureEvent
* @since 3.0.0
*/
public void click(View view, ClickExposureCellOp rxClickExposureEvent) {
public CellClickObservable click(View view, ClickExposureCellOp rxClickExposureEvent) {
CellClickObservable cellClickObservable = mViewClickObservables.get(view);
if (cellClickObservable == null) {
cellClickObservable = new CellClickObservable(rxClickExposureEvent);
@@ -445,19 +424,14 @@ public class BaseCell<V extends View> extends ComponentLifecycle implements View
} else {
cellClickObservable.setRxClickExposureEvent(rxClickExposureEvent);
}
if (serviceManager != null) {
final SimpleClickSupport service = serviceManager.getService(SimpleClickSupport.class);
if (service != null) {
service.onRxClick(cellClickObservable, rxClickExposureEvent);
}
}
return cellClickObservable;
}
/**
* @param view
* @since 3.0.0
*/
public void click(View view) {
public CellClickObservable click(View view) {
ClickExposureCellOp rxClickEvent = mRxClickEvents.get(view);
if (rxClickEvent == null) {
rxClickEvent = new ClickExposureCellOp(view, this, this.pos);
@@ -467,7 +441,7 @@ public class BaseCell<V extends View> extends ComponentLifecycle implements View
rxClickEvent.setArg2(this);
rxClickEvent.setArg3(this.pos);
}
click(view, rxClickEvent);
return click(view, rxClickEvent);
}
public static final class NanBaseCell extends BaseCell {
@@ -24,20 +24,6 @@
package com.tmall.wireless.tangram.support;
import com.tmall.wireless.tangram.dataparser.concrete.Card;
import com.tmall.wireless.tangram.op.ClickExposureCellOp;
import com.tmall.wireless.tangram.structure.BaseCell;
import com.tmall.wireless.tangram.util.LogUtils;
import android.support.annotation.NonNull;
import android.support.v4.util.ArrayMap;
import android.util.Log;
import android.view.View;
import io.reactivex.Observable;
import io.reactivex.ObservableTransformer;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.functions.Consumer;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
@@ -45,6 +31,14 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import android.support.annotation.NonNull;
import android.support.v4.util.ArrayMap;
import android.util.Log;
import android.view.View;
import com.tmall.wireless.tangram.dataparser.concrete.Card;
import com.tmall.wireless.tangram.structure.BaseCell;
import com.tmall.wireless.tangram.util.LogUtils;
/**
*
* Exposure which provide a group of methods to handle exposure events on ComponentViews and Card
@@ -269,25 +263,7 @@ public abstract class ExposureSupport {
}
private CompositeDisposable mCompositeDisposable = new CompositeDisposable();
public void onRxExposure(Observable<ClickExposureCellOp> exposureCellOpObservable, ClickExposureCellOp rxEvent) {
mCompositeDisposable.add(exposureCellOpObservable.subscribe(mConsumer));
}
private Consumer<ClickExposureCellOp> mConsumer = new Consumer<ClickExposureCellOp>() {
@Override
public void accept(ClickExposureCellOp rxClickExposureEvent) throws Exception {
attachUtInfoToView(rxClickExposureEvent.getArg1(), rxClickExposureEvent.getArg2());
}
};
public void setConsumer(Consumer<ClickExposureCellOp> consumer) {
mConsumer = consumer;
}
public void destroy() {
mCompositeDisposable.clear();
}
}
@@ -24,19 +24,6 @@
package com.tmall.wireless.tangram.support;
import android.support.v4.util.ArrayMap;
import android.util.Log;
import android.view.View;
import com.tmall.wireless.tangram.dataparser.concrete.Cell;
import com.tmall.wireless.tangram.op.ClickExposureCellOp;
import com.tmall.wireless.tangram.structure.BaseCell;
import com.tmall.wireless.tangram.util.LogUtils;
import io.reactivex.Observable;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
@@ -44,6 +31,13 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import android.support.v4.util.ArrayMap;
import android.util.Log;
import android.view.View;
import com.tmall.wireless.tangram.dataparser.concrete.Cell;
import com.tmall.wireless.tangram.structure.BaseCell;
import com.tmall.wireless.tangram.util.LogUtils;
/**
* ClickSupport which provide a group of methods to handle click events on ComponentViews
@@ -201,31 +195,7 @@ public abstract class SimpleClickSupport {
}
}
private CompositeDisposable mCompositeDisposable = new CompositeDisposable();
/**
* Handler click event on item in reactive way
*
* @param clickEventObservable
* @param rxEvent
*/
public void onRxClick(Observable<ClickExposureCellOp> clickEventObservable, ClickExposureCellOp rxEvent) {
mCompositeDisposable.add(clickEventObservable.subscribe(mConsumer));
}
private Consumer<ClickExposureCellOp> mConsumer = new Consumer<ClickExposureCellOp>() {
@Override
public void accept(ClickExposureCellOp rxClickExposureEvent) throws Exception {
defaultClick(rxClickExposureEvent.getArg1(), rxClickExposureEvent.getArg2(), rxClickExposureEvent.getArg3());
}
};
public void setConsumer(Consumer<ClickExposureCellOp> consumer) {
mConsumer = consumer;
}
public void destroy() {
mCompositeDisposable.clear();
}
}