mirror of
https://github.com/alibaba/Tangram-Android.git
synced 2026-10-18 13:50:50 +08:00
simplify clicksupport, exposuresupport
This commit is contained in:
@@ -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();
|
||||
|
||||
+14
-14
@@ -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
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user